Python VLC中的媒体列表

时间:2016-07-29 04:31:14

标签: python vlc libvlc

我需要用Python编写一个程序,它将使用Linux操作系统播放VLC播放器中文件夹中的视频文件。这些文件必须位于播放列表中。代码:

import vlc

mrl1 = '....1.3gp'
mrl2 = '....2.3gp'

Instance = vlc.Instance('--input-repeat=-1', '--fullscreen', '--mouse-hide-timeout=0')

MediaList = Instance.media_list_new()
MediaList.add_media(Instance.media_new(mrl2))
MediaList.add_media(Instance.media_new(mrl1))

list_player = Instance.media_list_player_new()
list_player.set_media_list(MediaList)

list_player.next()

player.play()

问题是,在运行第一个视频后,播放器关闭。我认为它没有将第二个视频添加到列表中。

  1. 如何在Python的LibVLC绑定中将视频添加到播放列表?
  2. 是否有可播放文件夹中所有视频的实用程序功能? UPD:我创建了一个播放列表,然后运行它来测试VLC播放器。只播放第一个视频。 VLC也关闭后。什么是问题?

2 个答案:

答案 0 :(得分:2)

你应该将它放入一个循环中,等待每首歌曲完成播放。例如,尝试此代码

import vlc
import time

mrl1 = '....1.3gp'
mrl2 = '....2.3gp'

song_list=[mrl1,mrl2]
Instance = vlc.Instance('--input-repeat=-1', '--fullscreen', '--mouse-hide-timeout=0')
for song in song_list:
    player=instance.media_player_new()
    media=instance.media_new(song)

    media.get_mrl()
    player.set_media(media)
    player.play()
    playing = set([1,2,3,4])
    time.sleep(1)
    duration = player.get_length() / 1000
    mm, ss = divmod(duration, 60)

    while True:
        state = player.get_state()
        if state not in playing:
            break
        continue

答案 1 :(得分:0)

使用while / for循环,它将逐个遍历媒体列表。可能在这种情况下,指针只指向第一个视频。

编辑1:

[使用For循环](Python VLC binding- playing a playlist)请参阅此问题的答案部分。 for循环用于遍历url(在这种情况下是媒体列表)。