5

ビデオとオーディオのデコードがどのように機能するか、特にタイミング同期 (30fps ビデオを取得する方法、それをオーディオと結合する方法など) を理解したいと思います。私はすべての詳細を知りたいわけではなく、その本質だけを知りたい. 実際のビデオ/オーディオ デコーダーの高レベルの簡略化を記述できるようにしたいと考えています。

私にポインタを提供してもらえますか?MPEG2 ビデオ/オーディオ デコーダーの実際の C/C++ ソース コードは、私が考えるこれらのことを理解するための最速の方法です。

4

6 に答える 6

6

動作するコーデックからソース コードを読み取るのが正しい方法のようです。次のことをお勧めします。

http://www.mpeg.org/MPEG/video/msg-free-mpeg-software.html

mpeg.org Web サイトで言及されていることを考えると、ここで必要なものが見つかると思います。

過去に、mpeg ビデオのデコードに取り組んだことがありますが (音声はありません)、原理は非常に単純です。いくつかの純粋なイメージが含まれており、いくつかの中間イメージは最も近いメイン イメージと相対的に記述されており、残りは最も近いメイン/中間イメージを使用して記述されています。

1 つのタイムスロット、1 つの画像。しかし、最近のコーデックはもっと複雑です。

編集:同期

私はオーディオとビデオの同期の専門家ではありませんが、この問題は同期レイヤーを使用して処理されているようです (定義については、こちらを参照してください)

于 2009-02-23T10:21:08.713 に答える
3

オーディオ/ビデオ同期の場合、基本的に、すべてのビデオおよびオーディオフレームにタイムスタンプを付ける必要があります。タイムスタンプは通常、PTS(プレゼンテーションタイムスタンプ)と呼ばれます。ビデオ/オーディオがデコーダーごとにデコーダーになると、オーディオ/ビデオレンダラーは、オーディオ/ビデオが同期されるように、フレームが適切なタイミングで表示されるようにスケジュールする必要があります。

詳細については、 MPEG2チュートリアルの「タイミングモデル」の章を参照してください。

于 2009-02-23T10:56:43.510 に答える
2

ffmpegのソース コード(svn から入手可能)、またはそのAPI ドキュメントを参照できます。

于 2009-02-23T10:21:09.243 に答える
1

MPEG-2形式についてどれだけ知っているかによっては、最初にそれに関する記事を読んで、大まかな概要を把握することをお勧めします。私はこれらのようなものを意味します:

MPEG-2標準のビギナーズガイド

MPEG-2ビデオ圧縮

于 2009-02-23T10:36:28.193 に答える
1

@パトリックとニルス

タイムスタンプがあるとおっしゃっていますが、これはビデオの部分だけだと思います。オーディオの場合、ヘッダーに十分な情報があると思います(「サンプル/秒」など)。これらのタイムスタンプはどのくらいの頻度で必要ですか? オーディオとビデオのパケットをインターレースすることで、ビデオ データが常にオーディオ データなどよりも先になると思いますか?

編集:必要なものを見つけました: http://www.dranger.com/ffmpeg/tutorial01.html

于 2009-02-23T11:56:08.343 に答える
1

ヘルトーン、

オーディオ フレームとビデオ フレームが同じ場所に配置されない可能性があるため、オーディオ データのタイムスタンプは引き続き必要です。例えば:

V: 1000 1040 1080 1120 ... A: 990 1013 1036 (紛失) 1082

最初のビデオ/オーディオ フレーム間のオフセットを補正する必要がある場合があります。さらに、(ビデオ ストリーミング中に) パケット損失が発生する可能性がある場合は、正確な同期を維持するために、ビデオとオーディオの両方のタイムスタンプが必要です。

于 2009-02-23T15:53:50.130 に答える