我正在使用 ffmpeg 从相机记录 RTSP MPEG4 流
- 通过调用 avformat_open_input 函数建立 RTSP
av_read_packet
使用(contest, & packet )从相机接收帧,并将其存储在 AVPacket 结构中。- 现在我想解析这个帧以确定哪个是 I 帧,然后再将其存储到文件中。使用
avcodec_decode_video
func 在这种情况下可能对我有帮助,但因为存在延迟解码,所以对我来说不是一个好选择。无论如何,我想用另一种方式
简单地说,我认为 packet.data 包含一种 RTP 格式,其中包括 RTP 标头 + RTP 数据。
我研究了其他一些主题,例如:如何处理绘制数据包和从 rtp 数据包解析 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