我发现这个问题真的很有趣,所以我下载了vlc
python 模块并对其进行了修改,我想我找到了适合你的解决方案。
我所做的是我构建了一个包含 VLC 实例的数组,我构建了一个创建 VLC 实例的函数,以及一个确保它们正在运行(并产生详细输出)的循环。
这确实需要您确保您的 VLC 播放器允许多个窗口实例。
我的代码:
import vlc
import time
VLCObjects = []
def VLCInstance(src, volume):
# creating vlc media player object
try:
vlc_instance = vlc.Instance()
player = vlc_instance.media_player_new()
media = vlc_instance.media_new(src)
player.set_media(media)
except:
return("Error: Was unable to mount media")
else:
pass
VLCObjects.append(player)
VLCObjects[0].audio_set_volume(volume)
VLCObjects[0].play()
# give time to initialize, then get length of audio & wait until done playing
time.sleep(1)
duration = VLCObjects[0].get_length()
#time.sleep(duration)
return("Success: Song playing")
然后你会在这里拨打所有电话或其他任何电话,然后循环:
song1 = ...
song2 = ...
VLCInstance(song1, 100)
VLCInstance(song2, 20)
while(True):
playing = False
time.sleep(1)
print(VLCObjects)
for x in range(0, len(VLCObjects) ):
value = VLCObjects[x].is_playing()
if value == True:
print("... VLCObject #%d is playing" % x)
playing = True
else:
print("... VLCObject #%d needed to be restarted" % x)
VLCObjects[x].play()
if playing == False:
break
结果输出看起来像这样,并且会有两个非窗口 VLC 播放器。
Success: Song playing
Success: Song playing
[<vlc.MediaPlayer object at 0x7fa56d271520>, <vlc.MediaPlayer object at 0x7fa56d271cd0>]
... VLCObject #0 is playing
0
0
[<vlc.MediaPlayer object at 0x7fa56d271520>, <vlc.MediaPlayer object at 0x7fa56d271cd0>]
... VLCObject #0 is playing
... VLCObject #1 is playing
[<vlc.MediaPlayer object at 0x7fa56d271520>, <vlc.MediaPlayer object at 0x7fa56d271cd0>]
... VLCObject #0 is playing
... VLCObject #1 is playing
[<vlc.MediaPlayer object at 0x7fa56d271520>, <vlc.MediaPlayer object at 0x7fa56d271cd0>]
... VLCObject #0 is playing
... VLCObject #1 is playing
[<vlc.MediaPlayer object at 0x7fa56d271520>, <vlc.MediaPlayer object at 0x7fa56d271cd0>]
... VLCObject #0 is playing
... VLCObject #1 is playing
[<vlc.MediaPlayer object at 0x7fa56d271520>, <vlc.MediaPlayer object at 0x7fa56d271cd0>]
... VLCObject #0 is playing
... VLCObject #1 is playing
[<vlc.MediaPlayer object at 0x7fa56d271520>, <vlc.MediaPlayer object at 0x7fa56d271cd0>]
... VLCObject #0 is playing
... VLCObject #1 is playing
[<vlc.MediaPlayer object at 0x7fa56d271520>, <vlc.MediaPlayer object at 0x7fa56d271cd0>]
... VLCObject #0 is playing
... VLCObject #1 is playing
[<vlc.MediaPlayer object at 0x7fa56d271520>, <vlc.MediaPlayer object at 0x7fa56d271cd0>]
... VLCObject #0 is playing
... VLCObject #1 is playing
[<vlc.MediaPlayer object at 0x7fa56d271520>, <vlc.MediaPlayer object at 0x7fa56d271cd0>]
... VLCObject #0 is playing
... VLCObject #1 is playing