オーディオとビデオのエンコードの練習-----pcm+yuv データを MP4 に変換する

1. コーディングフローチャート

ここに画像の説明を挿入します
ここに画像の説明を挿入します

2. 関連モジュールと機能

2.1 エンコーダ関連API

avcodec_find_encoder: エンコーダー ID に従ってエンコーダーを検索します。
avcodec_alloc_context3: エンコーダー コンテキストを作成します。
avcodec_open2: エンコーダーを開きます。

2.2 マルチプレクサ関連 API

avformat_alloc_output_context2: 出力フォーマットのマルチプレクサー コンテキストを作成します
。 avformat_new_stream: オーディオおよびビデオ ストリームを作成します。
avcodec_parameters_from_context: エンコーダー コンテキストのパラメーターをオーディオおよびビデオ ストリームのエンコーダー パラメーターにコピーします。 AVCodecParameters avio_open:
出力ファイルを正式に開きます。
avformat_write_header: ヘッダー情報を書き込みます。
av_interleaved_write_frame()、エンコードされた AVPacket をカプセル化し、ファイルを書き込みます。
av_write_trailer: ビデオ終了情報を書き込みます。

2.3 リサンプリング関連の API

swr_alloc_set_opts: リサンプリング構成パラメータを設定し、リサンプラー コンテキストを割り当てます。
swr_init: リサンプリング関連の構成を有効にします。
swr_convert: ビデオ フレームを変換します
。 swr_free: リサンプラー コンテキストを解放します。

注意点

av_packet_alloc によって取得されたデータは stream_index を設定する必要があります。そうでない場合、stream_index はデフォルトの 0 になります。

パケットの pts、dts、および継続時間のタイム ベースは、対応するストリームの time_base に変換する必要があります。


エンコーダー コンテキストのフラグは AV_CODEC_FLAG_GLOBAL_HEADER パラメーターを設定する必要があります。そうしないと、多くのビデオ プレーヤー、特にグローバル ヘッダー情報 (SPS、PPS) をそれぞれのキーではなくエクストラデータ ポインターに置くビデオストリーム パラメーターが再生できなくなります。フレーム

簡単なコーディングプロセス関連のコード

コードクラウドウェアハウスのリンク

おすすめ

転載: blog.csdn.net/m0_60565784/article/details/131689800