2

libavformat API を使用して H264 SPS & PPS NAL バイトを読み取る方法は?

「av_read_frame(input_avFormatContext, &avPkt)」API を使用して、.mp4 ビデオ (コーデックは h264) ファイルからビデオ データを「AVPacket」構造体に読み込んでみました。

avPkt->data をファイルにダンプしました。ただし、最初のフレームの読み取りは IDR フレームです。

「ffmpeg -i video.mp4 video.h264」を使用して生成されたファイルには、IDR の開始前に SPS と PPS が含まれます。

.mp4 ファイルから未加工の .h264 ビデオを抽出し、SPS、PPS、IDR、P1、P2... の順にダンプしたいと考えています。

libavformat API を使用してプログラムでこれを実行したいと考えています。

それについて何か考えはありますか?

ありがとう。

4

1 に答える 1

4

mp4-container (mkv も) では、PPS/SPS はフレーム データとは別にグローバル ヘッダーに格納されます。libav* API からそれらにアクセスするには、必要なビデオ ストリームに関連する AVStream の AVCodecContext で extradata フィールドを探す必要があります。また、extradata は標準の H.264 NAL とは異なる形式を持つ可能性があるため、形式の説明については MP4 コンテナーの仕様を参照してください。

于 2013-06-25T18:18:59.533 に答える