8

現在、MP3 ファイルのデコードに関する作業を行っていますが、MP3 ファイルに関する基本的な知識がいくつかあります。私は最近、MP3 用の単純なデコーダーを実装しています。デコード結果をMaaateデコーダーの結果と比較すると、この問題が発生します。

私のデコーダは、Maaate デコーダよりも 1 つ多いフレームを抽出します。サンプル MP3 ファイルの結果を精査したところ、最初のフレームが異常であることがわかりました。私のサンプル ファイルでは、最初のフレームの長さは 413 バイトで、フレーム ヘッダー0xfffb9064は他のすべてのフレームとは異なり、長さは 100 バイトでヘッダーは異なり0xfffb1064ます。

私の質問は: 結果の最初の「フレーム」は実際のフレームですか? そうですか、なぜ他と違うように見えるのでしょうか?そうでない場合、この構造は何に使用され、フレーム同期コードを共有しているため、他の構造と区別する方法は0xfff?

4

3 に答える 3

4

MP3 ストリームにはファイル ヘッダーがありません。残りのフレームよりも長いフレームが最初に 1 つしかないというのは少し奇妙に聞こえますが、これは完全に合法です。

ヘッダーのビットの簡単な説明があります: http://www.datavoyage.com/mpgscript/mpeghdr.htm

あなたの場合、両方のタイプのヘッダーが共通しています。

  • MPEG-1
  • レイヤ 3
  • 保護されていません
  • 44.1kHz
  • パディングなし
  • 非公開
  • M/Sジョイントステレオ
  • 著作権なし
  • オリジナルメディア
  • 強調なし

最初のフレームは残りのフレームと次の点で異なります。

  • 128kbit (417 バイトのフレームから 4 バイトのヘッダーを引いたもの)

残りは次のとおりです。

  • 32kbit (104 バイトのフレームから 4 バイトのヘッダーを引いたもの)

そのページには、ヘッダーに基づいてフレーム サイズを計算する式があります: 144*ビットレート/サンプルレート+パディング。

128kbit の最初のフレームは、サンプルの生成に使用されたエンコーダーのアーティファクト (バグ) であると思われます。最初のフレーム以降は 32kbit の固定ビットレート ファイルのままです。MP3 デコーダーは数フレームになるまで出力を生成できず、途中でビットレートが急激に上昇することはないため、問題が発生する可能性はほとんどありません。

于 2011-04-19T17:33:02.783 に答える
3

最初のフレームが VBR フレームである可能性は十分にあります。ここをチェックして、ヘキサエディタを使用してください。それが役に立てば幸い

于 2013-12-31T16:38:15.547 に答える