omxplayer не воспроизводится при загрузке

У меня есть скрипт 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:

  1. Создайте файл в /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
  2. Включите службу с помощью sudo systemctl enable omxplayer.

RPi должна загрузиться и запустить omxplayer в самом начале процесса загрузки. Консоль в этот момент бесполезна, а рабочий стол Pixel недоступен, если только вы не добавите что-нибудь для уничтожения omxplayer, когда это необходимо. Плеер работает в фоновом режиме, поэтому нажатие клавиши [esc] не приведет к выходу из него. Если RPi подключен к сети, вы можете получить доступ к нему по сети обычным образом.

Обратите внимание на использование параметров omxplayer: --vol -6000 для тишины (измените в соответствии с этим), -r для настройки частоты кадров видео, --loop для непрерывного цикла (с коротким пробелом между циклами, к сожалению), и -o hdmi для принудительного вывода HDMI.

Комментарии (0)

Я не думаю, что вы можете воспроизводить видео, не войдя сначала в учетную запись. Однако вы можете создать новую учетную запись с автологином, чтобы сделать это:

Добавьте нового пользователя, если вы не хотите ставить автологин на свой личный аккаунт:
sudo adduser videouser.

Если вашему скрипту нужны права root: (пропустите, если вы используете свою учетную запись)
sudo visudo

Затем перейдите в самый низ и добавьте/отредактируйте: (пропустите, если вы используете свою учетную запись)
videouser ALL=(ALL) ALL.

После этого введите nano ~/.bashrc (может потребоваться sudo). Перейдите в самый низ. Любой правильный bash, который вы поместите сюда, будет запущен, когда учетная запись войдет в систему:

omxplayer -b /absolute/path/to/video.mp4.

Комментарии (13)
Решение

Что мне пришлось сделать, чтобы заставить его работать: вместо того, чтобы использовать .bashrc для запуска, я должен был:

запускать при загрузке в среду LXDE см.: https://raspberrypi.stackexchange.com/questions/8734/execute-script-on-start-up

и благодаря комментарию Shreyas, убедитесь, что путь к видео абсолютный, чтобы предотвратить путаницу в рабочей директории.

Комментарии (0)