gpt4 book ai didi

python - 从在线流中记录的损坏的 AAC 文件

转载 作者:行者123 更新时间:2023-12-03 00:29:49 28 4
gpt4 key购买 nike

我正在以我所知道的最简单的方式从 AAC radio 流中录制音频:

r = requests.get('http://someradio.net:someport/stream.aac', stream=True)
self.new_filename()

with open(self.filename, 'wb') as f:
try:
for block in r.iter_content(self.chunk_size): f.write(block)
except KeyboardInterrupt:
pass

生成的音频文件未正确编码(我猜)导致 Adob​​e 应用程序(如 Premiere Pro)以一种有趣的方式对待它们。例如,他们将它们作为单声道导入,而它们应该是立体声的,最糟糕的是,音频的前半部分在整个持续时间内以 2 倍的低速度拉伸(stretch),而后半部分则丢失了。

因此,我使用 FFmpeg 和 AudioSegment(显然,它知道如何处理这些文件)将 AAC 转换为 MP3,这与 Premiere 配合得很好:
stream = AudioSegment.from_file('output.aac', 'aac')
stream.export('output.mp3', format='mp3')

但是录音很长,转换需要时间和资源。

我很确定可以对原始 AAC 做一些非常简单的事情,这样它们就可以被 Premiere 正确读取,我只是不知道它是什么。

添加1:我认为这可能与我正在从中间录制正在进行的流这一事实有关,因此AAC文件的标题或其他内容没有正确写入。也就是说,单声道/立体声属性似乎搞砸了。

补充2:Adobe Premiere Pro、After Effects、Media Encoder遇到的问题,都是最新版本(CC 2018,4月)。播放器(MPC、VLC、WMP)和 Vegas Pro 等所有其他应用程序都认为这些 AAC 很好。

添加 3:一个类似的问题(未回答),涉及从在线流中录制、AAC 和 2 倍慢的音频损坏:
AAC stream resampled incorrectly

最佳答案

问题的核心似乎是 Adob​​e(AE、PP、ME)未能正确处理 ADTS 容器中的 HE-AACv2 格式,这显然是在线广播流的标准。 Wiki notes Adobe Flash Player 存在问题,似乎所有其他 Adob​​e 产品都有问题。

Adobe 将此类文件视为 48000Hz 单声道,而它们实际上是 24000Hz 单声道,带有用于参数 channel 解码的附加参数 channel (这是 HE-AACv2 的主要功能)。看起来 Adob​​e 对这个单声道拉伸(stretch)做了一些不自然的事情,以制作具有相同持续时间的 48000Hz 文件。但这只是我的猜测,不知道 Adob​​e 到底是做什么的。

自然的解决方法是转换为另一种格式。例如,AAC-LC 即使在 ADTS 中也适用于 Adob​​e。

仅作记录:

What sound waves look like

声波是什么样子的。

关于python - 从在线流中记录的损坏的 AAC 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51110860/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com