2015-02-10 246 views
2

我想知道是否可以使用vlc.py打开(播放)音乐播放列表 (.m3u文件)?我搜索了一个答案,但无法找到它。我设法播放一个简单的mp3文件,甚至是一个mp3流,但我没有任何运气与播放列表。你能帮我吗,给我一些示例代码?我希望能够通过我的python程序中的轨道(Next和Previous)。 Thans提前Python VLC绑定 - 播放播放列表

+0

你将不得不编码自己的播放列表系统或找到一个已经可用的。 – Bioto 2015-02-10 20:09:18

+0

你是什么意思我自己的系统? VLC播放器(带GUI)可以播放.m3u文件并进入下一首曲目,之前的曲目...我想知道如何使用vlc.py模块完成... – 2015-02-10 20:13:20

+0

@NatkoKraševac你有没有得到这个工作? – 2016-01-30 14:16:33

回答

5

这是一个“非常”粗略模拟了一些代码,我写了别的东西,适应您的问题。
它应该允许您使用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')