有没有办法过滤掉MPEG视频流中的I / B / P帧并访问宏块信息?

时间:2014-03-01 20:47:57

标签: c++ c ffmpeg mpeg libavcodec

我正在尝试用C或C ++编写MPEG流视频分析程序。

我能够使用

找出视频文件中的帧类型
ffprobe -show_frames -pretty File.mpg | grep 'pict_type' > pict_type.txt

然而,基于帧的顺序,似乎它们处于“显示”(IBBPBBP ...)顺序而不是“传输”顺序(IPBBPBBPBB ...)并且它不是完全理想的做事方式我不能保证命令没有跳过任何帧或任何东西,因为它不在我的程序之外。

我已经尝试过OpenCV,但看起来我需要的信息对OpenCV来说太低了,我相信解决方案在于ffmpeg或libavcodec,但文档是CLI之后的噩梦。虽然我对其他解决方案持开放态度!

我需要的信息是:

  • 每个帧的类型(I,B或P)
  • 框架内的宏块总数
  • P帧内的帧内编码宏块的数量
  • B帧内的前向和后向预测宏块的数量
  • B帧内刚刚向后预测的宏块的数量
  • B帧内正向预先捕获的宏块的数量

我非常感谢你的帮助!

0 个答案:

没有答案