目次
1. FFmpeg コア構造
AVFormatContext: ファイル名、オーディオおよびビデオ ストリーム、継続時間、ビット レート、その他の情報を含むカプセル化解除機能の構造、AVCodecContext: コーデック コンテキスト、コーデック タイプ、
ビデオ幅などの情報を含む、エンコードとデコードに使用する必要がある構造。 、オーディオ チャネルの数とサンプリング レート、
AVCodec: コーデック情報を格納する構造体、
AVStream: オーディオまたはビデオのストリーム情報を格納する構造体、
AVPacket: オーディオまたはビデオのエンコード データを格納、
AVFrame: オーディオまたはビデオのデコード データ (生データ) を格納
2. デコード処理
3. FFmpegデコードの実装
デコードでは、圧縮ドメインのビデオ データをピクセル ドメインの YUV データにデコードします。実装プロセスは次の図に大まかに示されます。
図からもわかるように、大きく以下の3つのステップに分かれます。
- まず、デコードされる圧縮ドメイン内のビデオがあります。
- 次に、圧縮ドメインの圧縮フォーマットに従ってデコーダが取得されます。
- 最終デコーダの出力は、ピクセル領域の YUV データです。
4 番目、FFmpeg エンコーディングの実装
この図から、ビデオ エンコードのプロセスを大まかに見ることができます。
- まず、非圧縮の YUV 生データがあります。
- 2 つ目は、エンコードする形式に基づいて特定のエンコーダーを選択することです。
- 最終エンコーダーの出力は、エンコードされたビデオ フレームです。
5、FFmpegトランスコーディングの実装
従来のトランスコーディング プログラムがどのように動作するかを示す概略図
カプセル化の目的:
1. ビデオストリーム(Video Stream)、オーディオストリーム(Audio Stream)、字幕(Subtitle)、アタッチメント(t)、データ(d)、その他のコンテンツをファイルストリーム(Stream)に同時に格納すること。これはまさに「多重化」(時分割多重化) を意味します。
2. ネットワーク環境におけるデータの確実かつ高速な伝送を保証するためです。
エンコードの目的:
メディアデータを圧縮するためのものです。画像や音声を圧縮する場合、一般的なファイルデータの圧縮とは異なり、画像の特徴(表裏の関連性、隣接ブロックの関連性など)や音声の特徴(聴覚モデル)を利用して圧縮することができ、より高い圧縮率を実現できます。一般的な圧縮技術 圧縮率