解析RTP流以从Panasonic相机获得I帧的MPEG4编解码器

时间:2013-09-30 11:11:12

标签: c rtsp rtp mpeg-4

我正在使用ffmpeg来记录来自摄像机的RTSP MPEG4流

  1. 通过调用avformat_open_input函数
  2. 建立了RTSP
  3. 使用av_read_packet(比赛,& 数据包 )从相机收到相框,并将其存储在AVPacket结构中。
  4. 现在我想解析这个帧,以确定在将帧存储到文件之前哪个是帧。 在这种情况下使用avcodec_decode_video func可能对我有所帮助,但因为解码有延迟所以对我来说不是很好。无论如何,我想用另一种方式
  5. 我认为packet.data包含一个RTP格式,其中包括RTP头+ RTP数据。

    我研究了其他一些问题,例如:how to process draw data packetparsing MPEG-4 from rtp packet。实际上它们看起来非常接近我需要的东西,也许我做错了。因此,我仍然无法弄清楚 数据包 .data中RTP头的12字节在哪里然后是什么我真正需要的是I,P或B视频对象平面信息。

    尝试解析RTP格式但似乎 数据包 .data要么包含一些额外信息,要么包含纯RTP格式或不包含RTP标头。我不确定。

    Shotly:

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

1 个答案:

答案 0 :(得分:0)

我不使用FFmpeg,但根据to the doc,您可以使用AVPacket.data访问原始数据

此时也许你可以这样做:

int nalType = packet->data[0] & 0x1F;
if (naType == 5) // iFrame