2017-02-23 9 views
2

FFmpegでのエンコードに問題があります。 私はaacオーディオを持つau mp4ファイルを持っています。私はffmpegでオーディオをコピーしようとしました。 ソースmp4ファイルで、最初のオーディオノイズが0.30秒で表示されます。 ffmpeg -i inputfile.mp4 -c:a copy outputfile.aacを使用した変換後、結果のファイルが間違っています。最初のオーディオノイズは0.32秒で表示されます。 ファイルの存続期間も同じではありません。ffmpeg AACで変換後のオーディオファイルが間違っています

私はエンコーダを強制的にlibfaacにすると動作しますが、ファイルが大きすぎます。

なぜ、デフォルトのエンコーダ(aac、libfdk_aac)を使用しても動作しないのですか? 私は大胆から変換すると同じことが表示されます。

どうもありがとう

答えて

3

最初のフレームをデコードするためにデコーダによって必要とされているオーディオストリームでパディング枠があります。これは、AACのようなMDCTオーディオコーデックの技術的要件です。 MP4/MKVのようなタイムドサンプルコンテナでは、その最初のフレームは負の提示タイムスタンプを有する。未処理のAACビットストリームでは、その最初のフレームは素朴にデコードされます。各フレームは1024サンプルを有するので、21〜23msの持続時間を有する。タイミングの違いはそのオフセットに起因します。これを避けるには、M4Aのような容器に戻してください。 Appleから背景について

AAC正しく 符号化アルゴリズムの性質に起因する音声サンプルを符号化及び復号化 するためにソースPCMオーディオサンプルを超えてデータを必要とします。 AACエンコーディングは、 の2048個のオーディオサンプルの連続した変換を使用し、1024個のオーディオサンプルごとに適用されます。 (オーバーラップ)。正しいオーディオをデコードするには、 周期の1024オーディオサンプルの両方の変換が必要です。この理由から、エンコーダは、 の最初の「真の」オーディオサンプルの前に少なくとも1024個の無音サンプルを追加します。 としばしば追加します。これは、さまざまな「プライミング」、「プライミング サンプル」、または「エンコーダ遅延」と呼ばれます。

エンコーダ遅延と残り サンプルについての明示的な表現の欠如は、AAC符号化に特有の問題ではありません。 MPEG-4及び のADTS/MPEG-2ビットストリーム及びファイルコンテナでは、符号器遅延又は 余りのサンプルについて満足のいく、明示的な表現が依然として存在しない( )。 MP3はまた、AC-3などの独自のコーデックと同様に、ビットストリームである でこれらのデータ依存性と遅延を持ちます。

関連する問題