#python #vlc #python-vlc
Вопрос:
Поэтому я использую расширение VLC python. Я пытаюсь совместить воспроизведение видео с другой программой. Поскольку медиаплеер VLC имеет некоторые различия в том, сколько времени требуется для загрузки мультимедиа и начала воспроизведения, иногда он может быть не выровнен. Я хочу открыть/загрузить видео в VLC, поставить его на паузу, а затем дождаться воспроизведения триггера, чтобы я мог выполнить команду в обратном порядке с другой частью моей программы.
Когда я ввожу значение в media_player.pause, видео не будет воспроизводиться, но другой процесс будет. Если я не добавлю никакого значения в функцию media_player.pause(), видео будет воспроизводиться без паузы
import time, vlc
# media object
media = vlc.Media('video.mp4')
# setting media to the media player
media_player.set_media(media)
media_player = vlc.MediaPlayer()
media_player.set_media(media)
# Play to open/load the video
media_player.play()
# Pause the Video
media_player.pause()
# Other Stuff Happens
time.sleep(init_delay)
media_player.play()
Ответ №1:
Вам нужно дождаться загрузки видео или предварительного просмотра, прежде чем оно будет воспроизведено.
Он не будет останавливаться перед воспроизведением.
Простой ответ состоит в том, чтобы позволить видео перейти в состояние «воспроизведения», а затем приостановить его.
это можно сделать, просто дав ему время перейти в состояние воспроизведения, заснув, скажем, на 1 десятую долю секунды.
Вы не указываете, что такое активация trigger
, поэтому в следующем примере я добавил удобный для Linux триггер клавиатуры, время ожидания которого истекает через 10 секунд.
import time, vlc
import sys, select
# media object
media_player = vlc.MediaPlayer()
media = vlc.Media('V1.mp4')
vlc_playing = set([3, 4]) # 3 - Playing | 4 - Paused
media_state = None
# setting media to the media player
media_player.set_media(media)
# Play to open/load the video
media_player.play()
while media_state not in vlc_playing:
time.sleep(0.1)
media_state = media_player.get_state()
media_player.pause()
print("Paused - waiting for trigger")
print("Activate trigger with Enter or Ctrl C to terminate")
# Here the activation trigger is provide by pressing the Enter key
# within 10 seconds
# I've no idea if this will work on a Non Linux box
#
try:
inp, out, err = select.select( [sys.stdin], [], [], 10 )
if inp:
media_player.play()
else:
media_state = None
except KeyboardInterrupt:
media_state = None
if media_state: # Play loop
while media_state in vlc_playing:
time.sleep(1)
try: # Cater for Ctrl C during Play
media_state = media_player.get_state()
except Exception:
media_state = None
continue
else:
print("No Activation trigger - Terminated")