首页 > 解决方案 > Vlc Python 绑定无法设置时间

问题描述

我正在尝试使用 VLC python 绑定从设定的时间播放视频。我是怎么做的 set_time

set_time(self, i_time, b_fast)

设置电影时间(以毫秒为单位)。如果没有媒体正在播放,这将无效。并非所有格式和协议都支持这一点。

参数:

b_fast - 更喜欢快速搜索或精确搜索。i_time - 电影时间(以毫秒为单位)。

回报:

0 表示成功,-1 表示错误。

但每次我这样做时,视频都会从头开始。

我尝试通过set_time(i_time=xx)使用和不使用 i_time 来调用该函数。我试着给它几秒钟和几毫秒的时间,但没有运气。

当我初始化视频文件和播放视频文件但没有运气时,我也尝试过立即调用它。

我的代码:

  Instance = vlc.Instance()
  player = Instance.media_player_new()
  Media = Instance.media_new(self.video)
  player.set_media(Media)
  time = None

  ...
  ...

  time = int(matches[0].start.total_seconds() * 1000) 
  # matches[0] = Subtitle(index=1, start=datetime.timedelta(0, 33, 843000), end=datetime.timedelta(0, 38, 97000), content='this is a sentence', proprietary='')
  # matches[0].start.total_seconds() = 33.843

  player.play()
  print(player.set_time(time))

我希望视频从设定的时间开始,但每次我打印player.set_time()它都会返回None

标签: pythonpython-3.xvlc

解决方案


您可以向媒体添加一个start_time选项,或者非常短暂地等待播放开始,然后使用 set_time 选项。
这是Media.add_option版本。

import vlc
import time
url = "file:///home/rolf/GWPE.mp4"

playing = set([1,2,3,4])
instance=vlc.Instance()
player=instance.media_player_new()
media = instance.media_new(url)
media.add_option('start-time=600.00') # 600 seconds (10 minutes)
player.set_media(media)
player.play()
time.sleep(0.1) # wait briefly for it to start
while True:
    state = player.get_state()
    if state not in playing:
        break

推荐阅读