根据这个问题中的答案,我已经成功地将 RTP-payload 写入了一个 amr 文件,并且工作正常。
https://stackoverflow.com/questions/61961965/convert-rtp-payload-payload-type-107-amr-wb-16khz-1channel-to-wav
现在我尝试根据文档 RFC 4867 根据第 5.2 章编写多通道文件,但我失败了。没有解码器接受该文件。我有 2 个频道(立体声)。
我已经检查了文件中语音数据的正确性。他们似乎是正确的。首先,我根据第 5.2 章放置标题:
https://www.rfc-editor.org/rfc/rfc4867#section-5.2
我检查的幻数是正确的。然后我添加了chan-desc-field,据我了解应该是:
b'\x00\x00\x00\x02'
在音频文件中,我读取了相同的值。这个对吗?音频数据根据 5.3(第 1 段)保存:
1.pack_chan1 1.pack_chan2, 2.pack_chan1 2.pack_chan2, etc
现在单击 amr 文件(或 awb),解码器说,发生了错误。相反,当我只在文件中写入一个通道时,根据第 5.1 和 5.3 章,一切正常。它可以与 windows VLC-MEDIA PLAYER 和 Linux Ubuntu 的视频一起播放。
我的错误在哪里?
谢谢并恭祝安康
更新:RFC4867 的第 3.5 章第二段说,通常,编解码器不支持将多通道音频内容编码为单个比特流,它们可用于单独编码和解码每个单独的通道。
那么我该怎么做才能产生带有 2 个声道的立体声呢?