RPi, GPIO и omxplayer

Тема в разделе "Raspberry Pi", создана пользователем JustasWolf, 8 ноя 2015.

  1. JustasWolf

    JustasWolf Нерд

    Доброго времени суток, форумчане.
    Снова обращаюсь к вам за помощью.

    Итак, входные данные:
    - RPi mod B под управлением Rasbian
    - тактовые кнопки (пока, в дальнейшем будут сухие контакты автоматического управления)
    - несколько видео

    Задача:
    1. Вместе со стартом системы запускается скрипт, который циклически воспроизводит видео1 до тех пор, пока не будет нажата кнопка1
    2. При нажатии кнопки1 запускается видео2 и воспроизводится циклически до нажатия кнопки2.
    .....
    n. При нажатии кнопки(n-1) в любой момент времени происходит сброс и перезапуск скрипта.

    На питоне написал вот такое убожество (для начала):

    Код (Python):
    import RPi.GPIO as GPIO
    import time
    import os
    GPIO.setmode (GPIO.BCM)
    GPIO.setup (4, GPIO.IN)
    GPIO.setup (17, GPIO.IN)
    while True:
        inputValue1 = GPIO.input (4)
        inputValue2 = GPIO.input (17)
        os.system ("omxplayer --win '0 0 100 120' 000.mp4 --loop --font-size 1")
        if (inputValue2 == True):
            os.system ("omxplayer --win '0 0 100 120' 111.avi --loop --font-size 1")
        if (inputValue1 == True):
            os.system ("omxplayer --win '0 0 100 100' 222.mp4 --loop --font-size 1")
        time.sleep(.01)
    При нажатии кнопки ничего не происходит, первое видео воспроизводится по кругу, как так и надо.
    Пробовал удалять из кода запуск видео 000.mp4 - кнопки срабатывают корректно, но суть та же - воспроизводится только то видео, которое соответствует нажатой кнопке, однако другое не запускается при нажатии другой кнопки.
    Подскажите, пожалуйста, что я сделаю не так и куда смотреть.
    P.S. да, в программировании, тем более, в Питоне, я нуб, тапками просьба не кидаться. Заранее спасибо.
     
  2. AlexU

    AlexU Гуру

    Для начала -- Вы запускаете новые экземпляры 'omxplayer' без завершения уже работающих (поэтому первое видео и крутится постоянно). Логика должна быть примерно следующей:
    1. при старте системы запускаете экземпляр 'omxplayer' и сохраняете его PID;
    2. при нажатии кнпки завершаете запущенный эекземпляр и запускаете новый (с новым видео) с сохранением PID (шаг 2 повторяется при нажатии кнопок).
    Хотя возможно есть другой способ смены воиспроизводимого видео в 'omxplayer'.

    PS: это первые мысли....