【问题标题】:Media List in Python VLCPython VLC 中的媒体列表
【发布时间】:2016-12-03 16:23:02
【问题描述】:

我需要用 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也关闭了。什么是问题?

【问题讨论】:

  • UPD:我创建了一个播放列表,并在 VLC 播放器中运行它进行测试。仅播放第一个视频。之后VLC也关闭了。有什么问题?

标签: python vlc libvlc


【解决方案1】:

您应该将它放入一个循环中,等待每首歌曲播放完毕。例如,试试这个代码

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

【讨论】:

  • 谢谢。问题出在 VLC 或操作系统中。我已经重新安装了操作系统并安装了 vlc。有效。你知道如何指定需要播放所有视频的文件夹吗?
【解决方案2】:

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

编辑 1:

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

【讨论】:

  • "UPD:我创建了一个播放列表,并在 VLC 播放器中运行它进行测试。只播放第一个视频。在 VLC 也关闭之后。"问题可能出在 VLC 中。
  • 检查这个问题。在这个例子中,作者使用了 while 循环。
猜你喜欢
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 2013-11-16
  • 2017-12-31
相关资源
最近更新 更多