Я пытаюсь синхронизировать мигание светодиодов с воспроизводимым видео, используя Raspberry Pi 3B+ и оболочки Python для libVLC. Например, я хочу, чтобы светодиод мигал красным ровно через 2000 мс воспроизведения видео и зеленым через 5500 мс и т. д.
Я могу получить время между миганиями светодиода достаточно точно в Python (чтобы в течение нескольких мс), но я не могу синхронизировать начало воспроизведения видео с началом синхронизации светодиодов. Я уже попробовал несколько вещей
1. Инициализируйте видеоплеер, загрузите носитель, задержитесь в сценарии на несколько секунд, чтобы плеер запустился и загрузил носитель. Вызовите play() и немедленно запустите тайминг светодиодов.
Воспроизведение всегда задерживается после вызова воспроизведения на 100+ мс, похоже, из-за этого светодиоды срабатывают раньше, чем хотелось< /p>
2. Запрос State.Playing с использованием player.get_state() через некоторое время True цикл и запуск светодиодов сразу после обнаружения
Кажется изменение состояния задерживаться на 100+ мс, несмотря на то, что get_state() вызывается в цикле занятости, это приводит к позднему запуску процедуры LED
3. Добавление нескольких секунд черного экрана в начало видео, вызов player.get_time() примерно через секунду и сон на время до «начала» реальной части видео
get_time(), кажется, не дает точного времени, кажется, что он обновляется только каждые 300 мс или около того, создавая большое окно, в котором он не соответствует фактическому прогрессу видео.
Есть ли это какие альтернативы мне следует рассмотреть здесь? Есть ли способ получить более точное время запуска светодиодной процедуры? Я предпочитаю, чтобы задержка была меньше 30 мс, чтобы разница была практически незаметна для глаз.
Для справки вот код, который я пробовал до сих пор:
Попытка 1:
player = vlc.MediaPlayer()
player.toggle_fullscreen()
media = vlc.Media('/home/pi/Downloads/test.mp4')
player.set_media(media)
sleep(5)
player.play()
startLedRoutine()
Попытка 2:
player = vlc.MediaPlayer()
player.toggle_fullscreen()
media = vlc.Media('/home/pi/Downloads/test.mp4')
player.set_media(media)
sleep(5)
player.play()
while True:
if player.get_state() == vlc.State.Playing:
break
startLedRoutine()
Попытка 3:
player = vlc.MediaPlayer()
player.toggle_fullscreen()
media = vlc.Media('/home/pi/Downloads/test.mp4')
player.set_media(media)
sleep(5)
player.play()
sleep(5) # 10 seconds of black screen has been added to the start of the video
sleep(10 - player.get_time() * 1000) # sleep for the remainder of the time before 10s is reached
startLedRoutine()
Подробнее здесь: https://stackoverflow.com/questions/787 ... layback-us
Проблемы с синхронизацией запуска светодиодной процедуры с началом воспроизведения видео VLC с использованием Python lib ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Я хочу знать, как написать обратный вызов воспроизведения звука в python-vlc
Anonymous » » в форуме Python - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-