赞
踩
创作人QQ:851301776,邮箱:lfr890207@163.com,欢迎大家一起技术交流,本博客主要是自己学习的心得体会,只为每天进步一点点!
个人座右铭:
1.没有横空出世,只要厚积一定发。
2.你可以学历不高,你可以不上学,但你不能不学习
很早以前就已经实现了拉流,但是拉回来的流进行解码和转码问题,一直困扰了很久。之前网上找的库,是纯C语言写的,把h264流直接转为MP4,首先说这个库还不错,但是很不好的是这个库里面写的比较死,我使用的大华的摄像头,在拉回来流之后,转码之后播放器播放显示格式错误,使用工具发现是少SEI的原因。后来更换为ffmpeg,但是ffmpeg中avformat_write_header函数返回-22的问题,也是困扰了我很久,其实网上的很多资料,讲实话,根本就无法解决。贴的一些代码,可能自己都没测试过。真的是很费劲,最后只能自己去研究MP4的一些要求,经历了三四天才得以解决。
利用ffmpeg,把onvif协议中视频数据(rtp)流拉去,并把h264转成MP4,并保存到文件。
最早起使用的版本是2.8的,但是好多的函数不能用,后来安装了4.1的。
我使用的是:ffmpeg-4.1.tar.xz,编译的时候生成动态库和静态库。
这个工具名称叫H.264分析器,网上很多资源,可自行下载,通过这个工具分析出来了为什么我找的纯C语言实现的库无法转码(格式错误)
这部分网上的资源很多,这部分比较简单。
(1)文件创建
(2)写入MP4格式头
(3)循环的读取数据,解析并写入
(4)写入MP4格式尾
AVFormatContext 对应的结构体,输入和输出是分开的,很多代码写的都是一个,这个需要特别注意。
这个主要是因为没有设置对应的参数造成的
核心函数:avcodec_find_encoder、avformat_new_stream、avcodec_open2
这块的东西,网上很多,主要就是那么几块,协议研究一下就可以。
(1)把h264文件转码为MP4格式
ffmpeg -i test.264 test.mp4
(2)其他
可以自行查阅
个人建议,最好是先看看这些demo
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。