LINUX.ORG.RU

Сообщения lavrik

 

Запуск mplayer из-под X11 в скрипте Python

Форум — Development

Собственно сабж. Исходное оборудование:Banana Pi с подключенным по SPI считывателем RFID и монитором по HDMI. Установленная ОС:Lubuntu с LXDE.

Нужно было сделать, чтобы в зависимости от приложенной метки запускался тот или иной участок одного большого видеофайла. Для этого я родил скрипт Python, в котором через subprocess.Popen запускается mplayer в slave-режиме; дальше в бесконечном цикле скрипт опрашивает SPI и если находится одна из разрешенных меток, то стартует видео с определённой секунды в открытом mplayer-е на определённое время (почему не несколько видео фалов, а один большой? потому что критически важен абсолютно бесшовный переход между фрагментами, а mplayer некрасиво моргает рамкой окошка в случае использования фрагментов).

И вот собственно остался последний этап: нужно сделать, чтобы все это добро автозапускалось при старте системы. Вот тут-то и начались проблемы. Сначала я пытался запускать скрипт Python из скрипта bash, добавленного в автозапуск, однако сталкивался с тем, что видео запускалось с нарушением соотношения сторон и жутко тормозило при воспроизведении. В ходе анализа вывода консоли стало понятно, что mplayer не может найти видеовыход X11 и запускает с какими-то ограничениями через SDL. Т.е. bash-скрипт запускался не через tty7, в котором запущен xserver, а через tty1, в котором голая консоль. Начал пробовать запускать из bash-скрипта просто видео с различными ручными параметрами видеовывода - бесполезно. Потом я нашел в сети совет: прописать содержимое bash-скрипта в /etc/xdg/lxsession/Lubuntu/autostart. После этого видео стало корректно запускаться из-под X11. На радостях прописываю путь к своему Python-скрипту туда же - команда запуска mplayer в Python-скрипте опять идёт в tty1 и видео опять запускается абы как.

Вопрос: как из Python-скрипта адресовать в X11(который запущен в tty7) команду запуска mplayer? Или может возможно обратиться из Python-скрипта к экземпляру mplayer, который не создавался через этот скрипт (при помощи subprocess.Popen)? Помогите советом, заранее спасибо!

 , , , ,

lavrik
()

RSS подписка на новые темы