如何在 Python 3.5.3 上播放网络电台的流媒体音频
How to play streaming audio from internet radio on Python 3.5.3
我在 Windows 8.1 x64 上使用 Python 3.5.3,我需要播放来自 here
的音频
我试过 pyaudio,但它只给我白噪声,并且在 pyaudio 运行几次后出现错误(pyaudio 模块 'pyaudio' 没有属性 'PyAudio')。
请告诉我如何更好地播放来自 url 的流式音频,使用 Python...
P.S。我已经通过此代码获得了歌曲名称和艺术家姓名:
import requests
import time
import datetime
print(datetime.datetime.now())
import re
url = 'http://prem1.rockradio.com:80/bluesrock?9555ae7caa92404c73cade1d'
encoding = 'latin1'
info = ''
radio_session = requests.Session()
while True:
radio = radio_session.get(url, headers={'Icy-MetaData': '1'}, stream=True)
metaint = int(radio.headers['icy-metaint'])
stream = radio.raw
audio_data = stream.read(metaint)
meta_byte = stream.read(1)
if (meta_byte):
meta_length = ord(meta_byte) * 16
meta_data = stream.read(meta_length).rstrip(b'[=11=]')
stream_title = re.search(br"StreamTitle='([^']*)';", meta_data)
if stream_title:
stream_title = stream_title.group(1).decode(encoding, errors='replace')
if info != stream_title:
print('Now playing: ', stream_title)
info = stream_title
else:
pass
else:
print('No StreamTitle!')
time.sleep(1)
如果您对外部库开放,则可以使用 pip install python-vlc
为 python 安装 vlc 绑定
并使用player
方法直接从URL播放音频文件,如下所示。
import vlc
import time
url = 'http://prem1.rockradio.com:80/bluesrock?9555ae7caa92404c73cade1d'
#define VLC instance
instance = vlc.Instance('--input-repeat=-1', '--fullscreen')
#Define VLC player
player=instance.media_player_new()
#Define VLC media
media=instance.media_new(url)
#Set player media
player.set_media(media)
#Play the media
player.play()
vlc
播放器的优点是您可以直接从 URL 播放大多数媒体类型(不仅仅是 mp3),还可以执行类似播放器的选项,例如
>>> player.pause() #pause play back
>>> player.play() #resume play back
>>> player.stop() #stop play back
我在 Windows 8.1 x64 上使用 Python 3.5.3,我需要播放来自 here
的音频我试过 pyaudio,但它只给我白噪声,并且在 pyaudio 运行几次后出现错误(pyaudio 模块 'pyaudio' 没有属性 'PyAudio')。
请告诉我如何更好地播放来自 url 的流式音频,使用 Python...
P.S。我已经通过此代码获得了歌曲名称和艺术家姓名:
import requests
import time
import datetime
print(datetime.datetime.now())
import re
url = 'http://prem1.rockradio.com:80/bluesrock?9555ae7caa92404c73cade1d'
encoding = 'latin1'
info = ''
radio_session = requests.Session()
while True:
radio = radio_session.get(url, headers={'Icy-MetaData': '1'}, stream=True)
metaint = int(radio.headers['icy-metaint'])
stream = radio.raw
audio_data = stream.read(metaint)
meta_byte = stream.read(1)
if (meta_byte):
meta_length = ord(meta_byte) * 16
meta_data = stream.read(meta_length).rstrip(b'[=11=]')
stream_title = re.search(br"StreamTitle='([^']*)';", meta_data)
if stream_title:
stream_title = stream_title.group(1).decode(encoding, errors='replace')
if info != stream_title:
print('Now playing: ', stream_title)
info = stream_title
else:
pass
else:
print('No StreamTitle!')
time.sleep(1)
如果您对外部库开放,则可以使用 pip install python-vlc
并使用player
方法直接从URL播放音频文件,如下所示。
import vlc
import time
url = 'http://prem1.rockradio.com:80/bluesrock?9555ae7caa92404c73cade1d'
#define VLC instance
instance = vlc.Instance('--input-repeat=-1', '--fullscreen')
#Define VLC player
player=instance.media_player_new()
#Define VLC media
media=instance.media_new(url)
#Set player media
player.set_media(media)
#Play the media
player.play()
vlc
播放器的优点是您可以直接从 URL 播放大多数媒体类型(不仅仅是 mp3),还可以执行类似播放器的选项,例如
>>> player.pause() #pause play back
>>> player.play() #resume play back
>>> player.stop() #stop play back