0

カメラからRTSP MPEG4ストリームを記録するためにffmpegを使用しています

  1. RTSP は、avformat_open_input 関数を呼び出して確立されています
  2. av_read_packet(contest, & packet ) でカメラからフレームを受信し、AVPacket 構造体に格納します。
  3. ここで、このフレームを解析して、ファイルに保存する前にどのフレームが I フレームであるかを判断したいと考えています。この場合、func を使用avcodec_decode_videoすると役立つかもしれませんが、遅延デコードがあるため、私にとっては良い選択ではありません。とにかく別の使い方がしたい

簡単に言うと、packet.data には RTP ヘッダー + RTP データを含む RTP 形式が含まれていると思います。

how to process draw data packetrtp packet からの MPEG-4 の解析など、他のいくつかのスレッドを調べました。実際、それらは私が必要としているものと非常によく似ており、何か間違ったことをした可能性があります。そのため、パケット.data 内の RTP ヘッダーの 12 バイトがどこにあるかをまだ把握できず、本当に必要なのは I、P、または B ビデオ オブジェクト プレーン情報です。

RTP フォーマットを解析しようとしていますが、パケット.data に純粋な RTP フォーマット以上の追加情報が含まれているか、RTP ヘッダーが含まれていないようです。わからない。

ショットリー:

How can I parse the frame to get frame info (I, P or B) in AVPacket
4

1 に答える 1

0

私はFFmpegを使用しませんが、ドキュメントによると、 AVPacket.dataで生データにアクセスできます

この時点で、おそらくこれを行うことができます:

int nalType = packet->data[0] & 0x1F;
if (naType == 5) // iFrame
于 2013-10-08T08:14:21.777 に答える