我正在尝试编写一个动态播放单个电影文件的小应用程序。我用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。
任何有线索的人?
答案 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