オーディオとビデオの開発 - ffmpeg 入門 - シリーズ 2

目次

1. FFmpeg コア構造

2. デコード処理 

3. FFmpegデコードの実装 

4 番目、FFmpeg エンコーディングの実装

 5、FFmpegトランスコーディングの実装 


1. FFmpeg コア構造

AVFormatContext: ファイル名、オーディオおよびビデオ ストリーム、継続時間、ビット レート、その他の情報を含むカプセル化解除機能の構造、AVCodecContext: コーデック コンテキスト、コーデック タイプ、
ビデオ幅などの情報を含む、エンコードとデコードに使用する必要がある構造。 、オーディオ チャネルの数とサンプリング レート、
AVCodec: コーデック情報を格納する構造体、
AVStream: オーディオまたはビデオのストリーム情報を格納する構造体、
AVPacket: オーディオまたはビデオのエンコード データを格納、
AVFrame: オーディオまたはビデオのデコード データ (生データ) を格納

2. デコード処理


 

3. FFmpegデコードの実装 

デコードでは、圧縮ドメインのビデオ データをピクセル ドメインの YUV データにデコードします。実装プロセスは次の図に大まかに示されます。

図からもわかるように、大きく以下の3つのステップに分かれます。

  1. まず、デコードされる圧縮ドメイン内のビデオがあります。
  2. 次に、圧縮ドメインの圧縮フォーマットに従ってデコーダが取得されます。
  3. 最終デコーダの出力は、ピクセル領域の YUV データです。

4 番目、FFmpeg エンコーディングの実装

この図から、ビデオ エンコードのプロセスを大まかに見ることができます。

  1. まず、非圧縮の YUV 生データがあります。
  2. 2 つ目は、エンコードする形式に基づいて特定のエンコーダーを選択することです。
  3. 最終エンコーダーの出力は、エンコードされたビデオ フレームです。

 5、FFmpegトランスコーディングの実装 

従来のトランスコーディング プログラムがどのように動作するかを示す概略図

   

カプセル化の目的:

1. ビデオストリーム(Video Stream)、オーディオストリーム(Audio Stream)、字幕(Subtitle)、アタッチメント(t)、データ(d)、その他のコンテンツをファイルストリーム(Stream)に同時に格納すること。これはまさに「多重化」(時分割多重化) を意味します。
2. ネットワーク環境におけるデータの確実かつ高速な伝送を保証するためです。
エンコードの目的:

メディアデータを圧縮するためのものです。画像や音声を圧縮する場合、一般的なファイルデータの圧縮とは異なり、画像の特徴(表裏の関連性、隣接ブロックの関連性など)や音声の特徴(聴覚モデル)を利用して圧縮することができ、より高い圧縮率を実現できます。一般的な圧縮技術 圧縮率
 

 

おすすめ

転載: blog.csdn.net/qq_18757557/article/details/131880547