コーデックの内部で何が起こっているのか、私は非常に混乱しています。オーディオ エンコーダーとデコーダー内の要素について知りたいです。良い学習資料を見つけることができるリンクをいくつか教えていただければ幸いです。
正確には、コーデックがメディア ファイルを解析する方法を知りたいです。
タイトルはA/V圧縮について尋ねていますが、残りのコメントはメディアファイルの解析とそのコーデックの識別について説明しています。これらは非常に異なるタスクです。さまざまな組織によって仕様と実装が行われ、ほとんどのマルチメディアライブラリのさまざまなAPIによって実行され、とりわけ非常にさまざまなスキルセットが必要です。
A / Vファイル形式は、他のファイル形式とそれほど違いはありません。他のファイル形式は、形式文法にすぎません。構文解析、検証、および結果のオブジェクトグラフは、概念的には他の文法と同じです。実際には、標準のCSカリキュラム(コンパイラ、有限オートマトン)で遭遇する文法よりもはるかに単純になる傾向があります。AVIファイル形式は、現時点では時代遅れですが、次の理由から開始することをお勧めします。
一方、コーデックは、「コンシューマー」ソフトウェアに見られる最も複雑なアルゴリズムの一部です。彼らは、学術界と大企業の研究開発部門(膨大な特許ライブラリを含む)の両方の進歩を大いに利用しています。コーデックに習熟するには、少なくとも次の基本事項を知っている必要があります。
あなたがすでにまともなバックグラウンドを持っているなら(例えば、あなたは1つか2つの学部レベルの「エンジニアのための数学」タイプのクラスを受講した)、私はすぐに飛び込むと言います。最高のA /Vコーデックの多くはオープンソースです:
一般に、ビデオ圧縮は、エンド ユーザーの視聴体験への影響を最小限に抑えながら、できるだけ多くの情報を破棄することに関係しています。たとえば、RGB の代わりにサブサンプリングされた YUV を使用すると、ビデオ サイズがすぐに半分になります。これは、人間の目は明るさよりも色に対する感度が低いためです。YUV では、Y 値は明るさを表し、U 値と V 値は色を表します。したがって、色情報の一部を破棄してファイル サイズを小さくすることができますが、視聴者は違いに気付くことはありません。
その後、ほとんどの圧縮技術は、特に 2 つの冗長性を利用します。1 つ目は時間的冗長性で、2 つ目は空間的冗長性です。
一時的な冗長性は、ビデオ シーケンスの連続するフレームが非常に似ていることに注意してください。通常、ビデオは毎秒 20 ~ 30 フレームのオーダーであり、1/30 秒ではほとんど変化しません。任意の DVD を取り出して一時停止し、1 つのフレームに移動して、2 つの画像がどれほど類似しているかに注目してください。そのため、各フレームを個別にエンコードする代わりに、MPEG-4 (およびその他の圧縮規格) は、連続するフレーム間の差分のみをエンコードします (モーション推定を使用してフレーム間の差分を見つけます)。
空間的冗長性は、一般に画像全体の色の広がりが非常に低い頻度になる傾向があるという事実を利用しています。これは、隣接するピクセルが似たような色になる傾向があることを意味します。たとえば、赤いジャンパーを着ている画像では、ジャンパーを表すすべてのピクセルが非常に似た色になります。DCT を使用して、ピクセル値を周波数空間に変換することができます。この場合、一部の低周波数情報を破棄することができます。次に、逆DCTが実行されると(デコード中に)、画像は捨てられた低周波情報がなくなります。
この情報を破棄した場合の影響を確認するには、MS ペイントを開き、一連の重なり合う水平および垂直の黒い線を描画します。画像を JPEG として保存します (圧縮にも DCT を使用します)。パターンを拡大すると、線のエッジがシャープではなくなり、ぼやけていることに注目してください。これは、圧縮中に一部の情報 (黒から白への遷移) が破棄されたためです。素敵な写真付きの説明については、これを読んでください
さらに読むには、この本は非常に優れていますが、数学が少し重いです。
MPEG4デコーダーで作業することにより、MPEG4形式について少し学びました。ビデオとオーディオの両方について、エンコーダーとデコーダーのさまざまなリファレンス(およびオープンソース実装)があります。だから、本をヒットしてください-ウィキペディアから始めてください:それはフォローするための良い一般的な要約とリンクを持っています(あなたが「オープンスペック」に運が良ければ)。そして、ソースをヒットします。
何かをエンコードする方法は非常に多く(多くは非可逆または可逆であっても、何らかの形式の圧縮を伴います)、フレーミングコンテナと「サブフォーマット」も処理する必要があるため、問題全体は一般にさらに複雑になります。
楽しむ。
ここから始めてみてください:
Windows Media エンコーダの概要
http://www.microsoft.com/windows/windowsmedia/howto/articles/introencoding.aspx
さらなるデータは、codecpage.com で見つけることができます。