この質問に書かれた回答によると、RTPペイロードを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'
オーディオファイルでは、同じ値を読み取りました。これは正しいです?audiodata は 5.3 (第 1 段落) に従って保存されます。
1.pack_chan1 1.pack_chan2, 2.pack_chan1 2.pack_chan2, etc
ここで amr ファイル (または awb) をクリックすると、デコーダーはエラーが発生したことを通知します。それどころか、チャプター 5.1 および 5.3 に従ってファイルに 1 つのチャネルを書き込むだけでは、すべて正常に動作します。Windows VLC-MEDIA PLAYER と Linux Ubuntu のビデオで再生できます。
私の間違いはどこですか?
感謝と敬意
更新: RFC4867 の第 3.5 章の2 番目の段落には、通常、コーデックはマルチチャンネル オーディオ コンテンツの単一ビットストリームへのエンコードをサポートしていないため、個々のチャンネルを個別にエンコードおよびデコードするために使用できることが記載されています。
では、2 チャンネルでステレオ サウンドを生成するにはどうすればよいでしょうか。