繁体   English   中英

如何在python中播放原始mp3数据

[英]How to play raw mp3 data in python

我正在编写一个界面,可以使用gmusicapi( https://github.com/simon-weber/Unofficial-Google-Music-API )播放音乐,操纵播放列表等。 我已经有了我的应用程序,以便它可以下载原始的mp3数据,但是很难找到可以播放该文件的库。 GST可以播放网址,但不允许Cookie身份验证。 pygame可以播放mp3,但可以播放文件,不能播放数据。 有人知道如何在python中播放原始mp3数据吗?

def gm_PlaySong(self, url):
    req = urllib2.Request(url)
    for cookie in self.api.session.cookies:
        req.add_header(cookie.name, cookie.value)
    resp = urllib2.urlopen(req)
    song = resp.read()

这首歌是原始的mp3。

写入文件

首先,您可以做的简单事情就是将mp3数据写入pygame播放的文件中。 您可以这样做:

import pygame
def gm_PlaySong(self, url):
    req = urllib2.Request(url)
    for cookie in self.api.session.cookies:
        req.add_header(cookie.name, cookie.value)
    resp = urllib2.urlopen(req)
    song = resp.read()
    with open('path/to/file.mp3', 'wb') as outfile:
        outfile.write(song)

    pygame.mixer.music.load('path/to/file.mp3')

使用StringIO

另外,您可能会弄干一些东西(这有点猜测,因为我没有在这里进行测试的工具),您可以尝试使用StringIO.StringIO类将原始mp3数据类似地提供给pygame Python文件对象的方式。

看起来像这样:

import pygame, StringIO
def gm_PlaySong(self, url):
    req = urllib2.Request(url)
    for cookie in self.api.session.cookies:
        req.add_header(cookie.name, cookie.value)
    resp = urllib2.urlopen(req)
    song = StringIO.StringIO(resp.read()) # Gives you a file-like object

    # load song
    pygame.mixer.music.load(song)

暂无
暂无

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

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