我试图找出是否可以使用LibVLC Python在VLC中回放媒体文件。在
在python脚本中,我通过一个目录递归地解析(包含媒体和非媒体文件以及图像等),在VLC中打开并播放一个又一个文件。然后我试着分析,如果它真的可以用vlc函数来播放,will_play()和get_state()。但这是非常不可靠的,脚本必须暂停才能完全加载文件。例如,如果一个音频文件非常短,并且脚本暂停太长,它将不会被检测为“可播放”,因为它的播放已经停止等等。如果脚本在JPG上运行,它就会挂起,有时文本和pdf文件将被标记为“will_play”:-(到目前为止,我还不能使用vlc类,如MediaTrackInfo()
有没有一种方法可以只解析每个文件,并通过它的编解码器来确定VLC是否可以播放它?我只想在巨大的目录中进行排序,并复制出“真实的”媒体文件(音频和视频),这些文件没有损坏。在
这是我的原稿:
import os, sys, inspect, time
vlcpfad = "C:\Program Files (x86)\VideoLAN\VLC"
if not vlcpfad in sys.path:
sys.path.append(vlcpfad)
import vlc
# Get name and path of the script
pfadkomplett = os.path.realpath(os.path.abspath(inspect.getfile(inspect.currentframe())))
pfad = os.path.split(pfadkomplett)[0]
skriptname = os.path.split(pfadkomplett)[1]
# walk path
for pfad, unterordner, dateien in os.walk(pfad):
for dateiname in dateien:
# skip script itself
if dateiname == skriptname: continue
dateipfad = os.path.join(pfad, dateiname)
p = vlc.MediaPlayer(dateipfad)
p.audio_toggle_mute()
p.play()
# Wait a bit, so vlc can start playback
time.sleep(0.2)
while str(p.get_state()) == "State.Opening":
time.sleep(0.1)
print(dateipfad + ": " + str(p.will_play()))
p.stop()
del p
一种方法是在播放前测试媒体是否正常:
相关问题 更多 >
编程相关推荐