У меня есть скрипт python, который должен запустить omxplayer после завершения загрузки pi на последней версии Raspbian whit Pixel.
Я пробовал 3 различных метода из принятого ответа здесь : https://raspberrypi.stackexchange.com/questions/8734/execute-script-on-start-up
Скрипт выполняется, но видеоплеер не запускается. (На экране ничего не появляется)
Если я запускаю скрипт вручную, видео работает. Я пробовал как с включенным, так и с отключенным LXDE.
Как заставить omxplayer отображать видео при запуске после перезагрузки?
os.system(`killall omxplayer.bin`)
omxc = subprocess.Popen([`omxplayer`, `-b`, `dronesunset.mp4`])
Вы можете сделать это без необходимости создания графического интерфейса рабочего стола или входа в систему. Я использовал эту технику, чтобы RPi Zero 1.3 (без сети) загружался прямо в omxplayer
, непрерывно зацикливая видео - в моем случае это был двухчасовой аквариум. Вот как я это сделал, используя `systemd:
Создайте файл в /etc/systemd/system/omxplayer.service
, содержащий:
[Unit].
Описание=Отображение окружающего пейзажа
Before=systemd-user-sessions.service
[Служба]
TimeoutStartSec=0
ExecStart=/usr/bin/omxplayer -r --loop --vol -6000 -o hdmi "/path/to/video.mp4"
Тип=простой
Пользователь=ваш пользователь
ExecStop=/usr/bin/killall omxplayer
User=youruser
Включите службу с помощью sudo systemctl enable omxplayer
.
RPi должна загрузиться и запустить omxplayer
в самом начале процесса загрузки. Консоль в этот момент бесполезна, а рабочий стол Pixel недоступен, если только вы не добавите что-нибудь для уничтожения omxplayer
, когда это необходимо. Плеер работает в фоновом режиме, поэтому нажатие клавиши [esc]
не приведет к выходу из него. Если RPi подключен к сети, вы можете получить доступ к нему по сети обычным образом.
Обратите внимание на использование параметров omxplayer
: --vol -6000
для тишины (измените в соответствии с этим), -r
для настройки частоты кадров видео, --loop
для непрерывного цикла (с коротким пробелом между циклами, к сожалению), и -o hdmi
для принудительного вывода HDMI.
Я не думаю, что вы можете воспроизводить видео, не войдя сначала в учетную запись. Однако вы можете создать новую учетную запись с автологином, чтобы сделать это:
Добавьте нового пользователя, если вы не хотите ставить автологин на свой личный аккаунт:
sudo adduser videouser
.
Если вашему скрипту нужны права root: (пропустите, если вы используете свою учетную запись)
sudo visudo
Затем перейдите в самый низ и добавьте/отредактируйте: (пропустите, если вы используете свою учетную запись)
videouser ALL=(ALL) ALL
.
После этого введите nano ~/.bashrc
(может потребоваться sudo). Перейдите в самый низ. Любой правильный bash, который вы поместите сюда, будет запущен, когда учетная запись войдет в систему:
omxplayer -b /absolute/path/to/video.mp4
.
Что мне пришлось сделать, чтобы заставить его работать: вместо того, чтобы использовать .bashrc для запуска, я должен был:
запускать при загрузке в среду LXDE см.: https://raspberrypi.stackexchange.com/questions/8734/execute-script-on-start-up
и благодаря комментарию Shreyas, убедитесь, что путь к видео абсолютный, чтобы предотвратить путаницу в рабочей директории.