我正在使用ffmpeg来记录来自摄像机的RTSP MPEG4流
av_read_packet
(比赛,& 数据包 )从相机收到相框,并将其存储在AVPacket结构中。avcodec_decode_video
func可能对我有所帮助,但因为解码有延迟所以对我来说不是很好。无论如何,我想用另一种方式我认为packet.data包含一个RTP格式,其中包括RTP头+ RTP数据。
我研究了其他一些问题,例如:how to process draw data packet和parsing 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
答案 0 :(得分:0)
我不使用FFmpeg,但根据to the doc,您可以使用AVPacket.data访问原始数据
此时也许你可以这样做:
int nalType = packet->data[0] & 0x1F;
if (naType == 5) // iFrame