Python VLC绑定 - 播放播放列表

Nat*_*vac 2 python mp3 vlc playlist audio-player

我想知道是否可以使用vlc.py打开(播放)音乐播放列表(.m3u文件)?我搜索了一个答案,但找不到它.我设法播放了一个简单的mp3文件,甚至是mp3流,但我对播放列表没有任何好运.你能帮我一下,给我一些示例代码吗?我希望能够在我的python程序中浏览曲目(Next和Previous).提前到达

Rol*_*ony 7

这是我为其他东西编写的一些代码的" 非常 "粗略模拟,适合您的问题.
它应该允许您使用vlc.py播放流式音频,m3u音频播放列表和mp3文件.
正如我所说,它是非常粗糙的代码,但它应该指向正确的方向.
希望能帮助到你.

import requests
import vlc
from time import sleep
urls = [
    'http://network.absoluteradio.co.uk/core/audio/aacplus/live.pls?service=acbb',
    'file:///home/rolf/test.m3u',
    'file:///home/rolf/happy.mp3',
    'http://statslive.infomaniak.ch/playlist/energy90s/energy90s-high.mp3/playlist.pls',
    'http://streaming.radio.rtl2.fr/rtl2-1-44-128',
    ]

playlists = set(['pls','m3u'])

Instance = vlc.Instance()

for url in urls:
    ext = (url.rpartition(".")[2])[:3]
    test_pass = False    
    try:
        if url[:4] == 'file':
            test_pass = True
        else:
            r = requests.get(url, stream=True)
            test_pass = r.ok
    except Exception as e:
        print('failed to get stream: {e}'.format(e=e))
        test_pass = False
    else:
        if test_pass:
            print('Sampling for 15 seconds')
            player = Instance.media_player_new()
            Media = Instance.media_new(url)
            Media_list = Instance.media_list_new([url])
            Media.get_mrl()
            player.set_media(Media)
            if ext in playlists:
                list_player = Instance.media_list_player_new()
                list_player.set_media_list(Media_list)
                if list_player.play() == -1:
                    print ("Error playing playlist")
            else:
                if player.play() == -1:
                    print ("Error playing Stream")
            sleep(15)
            if ext in playlists:
                list_player.stop()
            else:
                player.stop()

        else:
            print('error getting the audio')
Run Code Online (Sandbox Code Playgroud)


Pra*_*od 5

只要改变路径,你就可以走了..

from vlc import Instance
import time
import os

class VLC:
    def __init__(self):
        self.Player = Instance('--loop')

    def addPlaylist(self):
        self.mediaList = self.Player.media_list_new()
        path = r"C:\Users\dell5567\Desktop\engsong"
        songs = os.listdir(path)
        for s in songs:
            self.mediaList.add_media(self.Player.media_new(os.path.join(path,s)))
        self.listPlayer = self.Player.media_list_player_new()
        self.listPlayer.set_media_list(self.mediaList)
    def play(self):
        self.listPlayer.play()
    def next(self):
        self.listPlayer.next()
    def pause(self):
        self.listPlayer.pause()
    def previous(self):
        self.listPlayer.previous()
    def stop(self):
        self.listPlayer.stop()
Run Code Online (Sandbox Code Playgroud)

创建一个对象

player = VLC()
Run Code Online (Sandbox Code Playgroud)

添加播放列表

player.addPlaylist()
Run Code Online (Sandbox Code Playgroud)

播放歌曲

player.play()
time.sleep(9)
Run Code Online (Sandbox Code Playgroud)

播放下一首歌曲

player.next()
time.sleep(9)
Run Code Online (Sandbox Code Playgroud)

暂停歌曲

player.pause()
time.sleep(9)
Run Code Online (Sandbox Code Playgroud)

继续歌曲

player.play()
time.sleep(9)
Run Code Online (Sandbox Code Playgroud)

上一首歌曲

player.previous()
time.sleep(9)
Run Code Online (Sandbox Code Playgroud)

停止歌曲

player.stop()
Run Code Online (Sandbox Code Playgroud)