简体   繁体   English

如何在 Python 3.5.3 上播放来自网络电台的流音频

[英]How to play streaming audio from internet radio on Python 3.5.3

I am using Python 3.5.3 on Windows 8.1 x64 and i need play audio from here我在 Windows 8.1 x64 上使用 Python 3.5.3,我需要从这里播放音频

I have tried pyaudio, but it gives me only white noise and error occurred after a few runs of pyaudio (pyaudio module 'pyaudio' has no attribute 'PyAudio').我试过 pyaudio,但它只给我白噪声,并且在运行几次 pyaudio 后出现错误(pyaudio 模块 'pyaudio' 没有属性 'PyAudio')。

Please, advise me how better play the streaming audio from url, using Python...请告诉我如何更好地使用 Python 从 url 播放流音频...

PS I already got the song title and artist name with this code: PS我已经使用以下代码获得了歌曲名称和艺术家姓名:

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'\0')

        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)

If you are open for external libraries, you can install vlc binding for python using pip install python-vlc如果您对外部库开放,则可以使用pip install python-vlc为 python 安装 vlc 绑定

And use player method to play audio file directly from URL as below.并使用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()

Advantage of vlc player is that you can play most media types directly from URL (not just mp3) and also perform player like options such as vlc播放器的优点是您可以直接从 URL(不仅仅是 mp3)播放大多数媒体类型,还可以执行播放器之类的选项,例如

>>> player.pause()  #pause play back
>>> player.play() #resume play back
>>> player.stop() #stop play back

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM