在单个WAV文件中存储具有不同编码/采样的多个通道

时间:2014-04-09 06:01:22

标签: audio wav rtp

我想在一个WAV文件中混合两个RTP流(每个呼叫方向一个)。

问题是两个流可能使用不同的编解码器(因此采样频率,编码等)不同。

是否可以使用两个通道(即立体声)将两个RTP流存储在WAV文件中?换句话说,有没有办法存储具有不同编码,采样频率等的多个频道?

2 个答案:

答案 0 :(得分:1)

WAV文件的结构假定所有Feed的通道的采样率和通道位数相同。编码应用整个提要(使用许多编码/格式/编解码器,您无法在不解码提要的情况下分离通道)。

您需要将Feed存储在单独的文件中,或者您需要支持多个音频轨道的文件格式(例如MP4,MKV),尽管它们都有自己的限制。

答案 1 :(得分:1)

正如罗曼·R提到的那样,它不是即时的。您需要在两者之间采取额外步骤,将RTP流上的任何内容转换为正确的WAV文件。我们的想法是使用像ffmpeg这样的软件:

2×mono→stereo:ffmpeg -i left.mp3 -i right.mp3 -ac 2 output.wav

之后你可以尝试一些味道(未经测试):

ffmpeg -i rtp://leftrtp -i rtp://rightrtp -ac 2 output.wav

您很可能需要调整编解码器设置以使其按您的需要运行。你可以谷歌周围找到关于这个主题的一些信息或阅读ffmpeg doc