はい、コーデック設定2バイトが最初に受信したものです。そして、それは生aacデータブロックです。エンコーディング中に以下のフォーマットをどのように引き出すかを見ることができます。私は最初、ドキュメンテーションに従おうとしました。彼らは、彼らがlatm形式であり、それを解析しようとしていたと言いました。私はアンドロイドのドキュメンテーションに「diff」を見つけました。その出力は実際には生のブロックであると言いました。それが分かっていれば、それは単に自分のニーズに合った容器を選ぶということでした。特に、flvやmp4ではなくadtsのコンテナが必要でした。
コンテナに十分な大きさの配列にペイロードデータをコピーするには、ビットを追加してください。このようなものを使用して
profile = (configParams[0]>>3)&0x1f;
frequency_index = (this.configParams[0]&0x7) <<1 | (this.configParams[1]>>7) &0x1;
channel_config = (this.configParams[1]>>3) &0xf;
int finallength = encoded_length + 7;
ENCodedByteArray[0] = (byte) 0xff;
ENCodedByteArray[1] = (byte) 0xf1;
ENCodedByteArray[2] = (byte) (((profile - 1) << 6) + (frequency_index << 2) +(channel_config >> 2));
ENCodedByteArray[3] = (byte) (((channel_config & 0x3) << 6) + (finallength >> 11));
ENCodedByteArray[4] = (byte)((finallength & 0x7ff) >> 3);
ENCodedByteArray[5] = (byte) (((finallength & 7) << 5) + 0x1f) ;
ENCodedByteArray[6] = (byte) 0xfc;
:だから私のソリューションのためのインターネットを精練した後、私は次のコードを生成
byte chunkADTS[]=new byte[info.size + 7];
fillInADTSHeader(chunkADTS,info.size);
outputBuffers[bR].get(chunkADTS,7,info.size);
buffer.pushData(chunkADTS);
詳しい調査の結果、CSD-0はESDS(エレメンタリストリーム記述)が含まれていることを信じるように私をリードしています。 Androidソースのavc_utils.cppのMakeAACCodecSpecificDataを見ると、最初の5ビットがオブジェクトタイプ(2)で、次の4つは周波数インデックス(4 = 48000)、次の4つはチャネルconfig(2)です。 [このwikiページ](http://wiki.multimedia.cx/index.php?title=Understanding_AAC)は、残りのビットがフレーム長、コアデコーダー、拡張フラグに依存することを示します。 ESDSの重要な要素をセットアップするMediaFormat.createAudioFormat()を使用しています。 –