从流写入wav文件没有音频数据



我正在iheartradio上从流创建一个wav文件。我可以获得流url,但一旦我将数据写入wav文件,我就无法在我尝试过的任何媒体播放器上播放。我没有太多的wav文件的经验,所以任何帮助都将不胜感激。到目前为止,我还没有看到类似的帖子:

import requests
stream_url = "http://stream.revma.ihrhls.com/zc2525"
r = requests.get(stream_url, stream=True)
with open('stream.wav', 'wb') as f:
try:
for block in r.iter_content(1024):
f.write(block)
print(block)
except KeyboardInterrupt:
f.close()

我已经测试了您的代码,它似乎可以工作。我一点问题都没有。问题一定是你的音频播放器。你用一个你知道有效的wav文件测试过吗?

您假设响应包含WAV标头和PCM(脉冲编码调制(样本。事实并非如此。如果打印响应标头,您会看到响应包含AAC(高级音频编码(音频数据,这是一种有损压缩音频格式,与无损WAV完全不同。AAC是互联网广播流的标准格式。

话虽如此,您的代码对我来说很好,并且生成了";。wav";文件确实在我的Windows 10 Windows Media Player/VLC中播放。然而,仅仅因为你给了你的文件"。wav";扩展名,并不意味着它实际上是一个WAV文件。这可能只是因为你的媒体播放器比我的更迂腐,拒绝播放文件头和文件扩展名之间存在差异的文件。我的媒体播放器似乎忽略了扩展名,并试图通过检查文件头来确定格式——你甚至可以将其重命名为stream.mp3stream.foobar,它也会播放相同的内容。同样,文件扩展名并不重要,重要的是写入文件的实际数据(头和样本(。不要以为所有内容都是WAV文件。

最新更新