FFmpeg解码H264裸流并转换成opencv Mat

感谢雷霄骅博士的在中文视频编解码的付出,http://blog.csdn.net/leixiaohua1020


最近要搞一些视频推流的事情,要解析H264裸流并且获取opencv格式的Mat数据给算法工程师们跑算法.相关资源一直很难找到,经常都是太旧导致API版本都更新换代了,没办法让新人或者外行[比如我]快速验证代码是否可行.在参考多个博客,前人的代码东拼西凑总算是写出了这个H264解码器.算是尽我一点点的绵薄之力对这个社区进行回馈吧.

项目地址:
https://github.com/hirorogithub/ffmpeg_sample-H264_to_cv-Mat
环境依赖:
ffmpeg 3.3
opencv3.20(其实2.4应该也没啥问题)

文件简单介绍:
- H264Decoder.h H264Decoder.cpp:解码器本体,输入H264帧,(以0001开头),输出cv::Mat(如果遇到sps,pps则解码失败,当然第一次遇到的时候ffmpeg会记录下sps,pps的信息用于后面解码)
- H264Decoder_jni.cpp H264Decoder.java JNI文件以及对应java class 注意我在jni层返回的数组中拼凑了图片的长宽信息进去(2*sizeof(int)),所以获得这个数组时需要做相应的解析.由于这边的需求是java负责转发数据,实际跑cv算法还是在C++,所以有这么一个操作,不需要的可以自行处理掉

一些坑:
ffmpeg自己有个time.h,编译时加入头文件依赖什么的,很容易报错找不到time相关的基本类型,解决方法百度有.

一些完善:
我会考虑制作一点H264裸流的样例数据并且写个简单的调用example以供参考.


时间2017-07-18:已经upload了sample调用以及测试数据帧,没记错的话0号文件是H264裸流的整合文件,一个文件里面有很多帧.1号往后的文件是以0001作为分割的H264单帧文件,帧文件都打包上git了

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值