用python阅读音频流

2024-10-03 19:24:59 发布

您现在位置:Python中文网/ 问答频道 /正文

令人惊讶的是,在bash中,你可以做到

$ curl http://mp3.streampower.be/radio1-high.mp3 > test.mp3

有了音频流,然后^C输出,你就会有一个工作的mp3文件,这让我相信我可以用python实现这个自动化,但我不知道如何实现。在

如果我真的这么做

^{pr2}$

它甚至不读流。在

在python中是否有类似于java的BufferedInputReader之类的东西,或者有人能给我一些关于我应该如何做的建议吗?阅读音频流,并让它在一段时间后停止阅读。在

谢谢


Tags: 文件testbashhttpbejavacurl音频
1条回答
网友
1楼 · 发布于 2024-10-03 19:24:59

最好从urllib2.urlopen()中保存类似文件的对象,然后在带有size参数的循环中使用其read方法:

#!/usr/bin/python

import urllib2

f=file('python.mp3', 'w')

url=urllib2.urlopen("http://mp3.streampower.be/radio1-high.mp3")

while True:
    f.write(url.read(1024))

您的代码在调用read时没有尝试读取整个内容的size参数。这是一条小溪,那还需要一段时间。如果流关闭,然后您对write的调用可以继续进行,您将很快从没有文件变成一个大文件。在

我这里的示例代码将为您构建一个既漂亮又缓慢的mp3文件。如果流的发送速度比典型的mp3比特率快得多,您可能需要调整1024,但这应该没问题。(一个128kbps的流每秒需要16个系统调用write(2),这一点不应该有任何压力。但在10mbit或更高的速度下,这会很糟糕,您应该使用更大的read大小。)

相关问题 更多 >