Пытаюсь запускать видео файлы с Raspberry Pi из питона. Для этого использую omxplayer-wrapper.
nПытаюсь реализовать следующий алгоритм:
n- n
- В начале работы программы проигрывается файл a.mp4 n
- При нажатии кнопки 1, a.mp4 останавливается и включается b.mp4. Когда он заканчивается, снова включается a.mp4 n
- При нажатии кнопки 2, a.mp4 останавливается и включается c.mp4. Когда он заканчивается, снова включается a.mp4 n
Алгоритм работает, но наблюдаются следующие недостатки:
n- n
- После того как заканчивает проигрываться файл b.mp4 перед запуском a.mp4 виден рабочий стол (примерно 1 секунду) n
- После того как заканчивает проигрываться файл c.mp4 перед запуском a.mp4 виден рабочий стол уже больше времени (примерно 10-12 секунд) n
Как правильно осуществить эту задачу?
nПривожу набросок кода:
nfrom omxplayer import OMXPlayefrom time import sleepnplayerA = OMXPlayer('path/to/a.mp4', args=['-b', '--loop'])nplayerB = OMXPlayer('path/to/b.mp4', args=['-b'])nplayerC = OMXPlayer('path/to/c.mp4', args=['-b'])nplayerA.play()nwhile True:n if Button1PressedFlag==True: #set in interruptn Button1PressedFlag=Falsen playerA.pause()n playerB.play()n while playerB.is_playing():n sleep(0.2)n playerB.quit()n playerA.play()n if Button2PressedFlag==True: #set in interruptn Button2PressedFlag=Falsen playerA.pause()n playerC.play()n while playerC.is_playing():n sleep(0.2)n playerC.quit()n playerA.play()nnUPD:
Вчера вечером проверил - вообще жесть.is_playing то работает, то не работает.
Там где не работает is_playing(), работает функция playback_status(), хотя она используется в is_playing()..quit() то убивает процесс, то нет.stop() то останавливает проигрыватель, то убивает процесс
Каша страшная..
Решил проблему грязным трюком:
1.запускаю видео
2. беру его продолжительность и вставляю в sleep()
3. после слипа убиваю видео
Если надо переключить видео, то переключение происходит в прерывании от кнопки.
Кажется работает... Но не красиво как-то... :(
question@mail.ru
·