AndroidのMediaCodec APIを使用して、AACに生のオーディオをエンコードしています。問題:AACストリームを1秒単位でサーバーに送信する必要があります。だから私はストリームを分割する必要があります。現在、AACフレームは1024サンプルであるため、各チャンクにはAACフレームがround(SAMPLE_RATE/1024)
個あります。しかし、「プライミングサンプル」のために、この単純なAACストリームの切断は機能しません。 詳細はこちらをご覧ください。サーバーにチャンクを送信した後、クライアントはWebブラウザのChromeで受信し、Web Audio APIを使用すると受信したすべてのチャンクが再生されます。大容量のオーディオバッファが最初に割り当てられ、受信されたチャンクがデコードされ、オーディオバッファにコピーされ、オーディオバッファが再生される。 これはAACでは機能しません(Ogg/Vorbisでも動作します)。 AACでは、生成されたサウンドにアーティファクトがあります。各秒の終わりには、次の秒の開始点はゼロになり、徐々に波形は通常のサイズになるまで増加します。これは10,20ミリ秒間続きます。 この問題は、"priming samples"が見つからないことが原因と考えられます。たぶん、Web Audio APIは、各AACチャンクの先頭に「プライミングサンプル」があると予想しています。見つからず、実際のオーディオを変更します。AACストリームの分割、サンプルのプライミング/パディングの問題(gapless再生)
質問:私は元のAACストリームを分割し、1秒の「良い」AACチャンクを送信するにはどうすればよいですか? 私が理解しているところでは、前の2つのフレーム(前のチャンクの最後の2つのフレーム)を各チャンクの先頭に含める必要があります。ただし、この数は変更する必要があり、多くのドキュメントはありません。いくつかの専門家の助言が評価されます。