使用Python绑定为VLC重复单个电影:什么是psz_name

时间:2011-08-27 13:28:45

标签: vlc python-bindings

我正在尝试编写一个动态播放单个电影文件的小应用程序。我用Python编写了它,使用these VLC-Python绑定

我会说这不会那么难,即使非常稀疏文档,我可以在屏幕上没有任何其他内容的情况下全屏获取电影,甚至更改我想要播放的文件。我不能简单地让一部电影重复

我使用以下代码:

self.media = []

这里有一个--repeat-tag:

self.vlc_inst = vlc.Instance('--mouse-hide-timeout=0', '--fullscreen', '--repeat')

这里有'--repeat'标签:
     self.media = self.vlc_inst.media_new(NEW_VIDEO_NAME + str(currentVideoN)+ VIDEO_EXTENSION,'--repeat')

    self.player = self.vlc_inst.media_player_new()                  
    self.player.set_fullscreen(True)    
    self.player.set_media(self.media[currentVideoN])
    self.player.play()

这些重复标签似乎没有做任何事情。 Instance 类确实有一个函数vlm_set_loop(self, psz_name, b_loop),但我不知道 mrl 应该是什么。在原始代码中,我发现它应该是一个char-array(String),但我不知道这应该是什么类型的String。

任何有线索的人?

3 个答案:

答案 0 :(得分:5)

嗯,这个问题很老了,但无论如何......我认为你可以使用'--repeat'而不是vlc.Instance(只适用于medialist而不是单个媒体文件)像'--input-repeat=999999'这样的东西不是真正的循环,而是尽可能接近(再次:afaik ;-))

答案 1 :(得分:0)

使用可以使用子流程

p = subprocess.Popen('cvlc', 'fullscreen', 'home/pi/demo.mp4', '--loop')

我之前使用的是VLC而不是CVLC,但对我来说效果不佳,它在循环结束时重新加载VLC播放器并调整其大小

答案 2 :(得分:0)

我能够通过将媒体设置为当前媒体并调用播放来使媒体重放。代码是垃圾吗?是的,它是:back函数内部可能未调用onEnd函数,否则由于某种原因我将无法完全填充。它行得通吗?是的

import vlc


doTrashCode = False
player = vlc.MediaPlayer("C:/Users/benj5/Videos/2019-04-29 22-14-55_Trim.mp4")


def start():
    player.set_fullscreen(True)
    em = player.event_manager()
    em.event_attach(vlc.EventType.MediaPlayerEndReached, onEnd)
    player.play()


def onEnd(event):
    global doTrashCode
    if event.type == vlc.EventType.MediaPlayerEndReached:
        doTrashCode = True


def back():
    player.set_media(player.get_media())
    player.play()


start()

while True:
    if doTrashCode:
        back()
        doTrashCode = False