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



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

我想说这不会很难,即使非常稀疏的文档,我可以得到一个电影全屏没有任何其他屏幕上,甚至改变我想要播放的文件。我不能简单地让一部电影重复

我使用以下代码:

self.media = []

——repeat-tag here:

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

和这里的"——repeat"标签:
自我。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应该是什么。在原始代码中,我发现它应该是一个字符数组(字符串),但我不知道这应该是什么样的字符串。

有谁知道吗?

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

我可以通过将媒体设置为当前媒体并调用play来回放媒体。代码是垃圾吗?是的,它是: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

可以使用subprocess

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

我使用VLC而不是早先的CVLC,但它不适合我,它是重新加载和调整VLC播放器时,循环结束

查看源代码,我发现这是一个有效的解决方案。

定义媒体列表后,将媒体列表添加到media_list_player中,可以在播放器上设置播放模式。在文档中,这是一个枚举。

class PlaybackMode(_Enum):
    '''Defines playback modes for playlist.
    '''
    _enum_names_ = {
        0: 'default',
        1: 'loop',
        2: 'repeat',
    }
PlaybackMode.default = PlaybackMode(0)
PlaybackMode.loop    = PlaybackMode(1)
PlaybackMode.repeat  = PlaybackMode(2)

你所需要做的就是在列表播放器中设置模式:

listPlayer.set_playback_mode()变为listPlayer.set_playback_mode(vlc.PlaybackMode(1))listPlayer.set_playback_mode(vlc.PlaybackMode().loop)

import vlc
from pathlib import Path
import time
import os

class Player:
    def __init__(self):
        self.player = vlc.Instance()
    def addPlayList(self, localPath):
        self.mediaList = self.player.media_list_new()
        path = os.path.join(os.getcwd(), localPath)
        self.mediaList.add_media(path)
        self.listPlayer = self.player.media_list_player_new()
        self.listPlayer.set_media_list(self.mediaList)
        self.listPlayer.set_playback_mode(vlc.PlaybackMode(1))
    def play(self):
        self.listPlayer.play()
    def stop(self):
        self.listPlayer.stop()

play = Player()
play.addPlayList("test.mp4")
play.play()
while True:
    time.sleep(4)

相关内容

  • 没有找到相关文章

最新更新