当前位置:   article > 正文

Linux onvif协议实现三(h264转MP4文件保存)_linux h264 转 mp4

linux h264 转 mp4

创作人QQ:851301776,邮箱:lfr890207@163.com,欢迎大家一起技术交流,本博客主要是自己学习的心得体会,只为每天进步一点点!

个人座右铭:
1.没有横空出世,只要厚积一定发。
2.你可以学历不高,你可以不上学,但你不能不学习

一、介绍

        很早以前就已经实现了拉流,但是拉回来的流进行解码和转码问题,一直困扰了很久。之前网上找的库,是纯C语言写的,把h264流直接转为MP4,首先说这个库还不错,但是很不好的是这个库里面写的比较死,我使用的大华的摄像头,在拉回来流之后,转码之后播放器播放显示格式错误,使用工具发现是少SEI的原因。后来更换为ffmpeg,但是ffmpeg中avformat_write_header函数返回-22的问题,也是困扰了我很久,其实网上的很多资料,讲实话,根本就无法解决。贴的一些代码,可能自己都没测试过。真的是很费劲,最后只能自己去研究MP4的一些要求,经历了三四天才得以解决。

二、主要目的

        利用ffmpeg,把onvif协议中视频数据(rtp)流拉去,并把h264转成MP4,并保存到文件

三、ffmpeg环境问题

1.版本

最早起使用的版本是2.8的,但是好多的函数不能用,后来安装了4.1的。 

2.源码包

我使用的是:ffmpeg-4.1.tar.xz,编译的时候生成动态库和静态库。

四、工具

        这个工具名称叫H.264分析器,网上很多资源,可自行下载,通过这个工具分析出来了为什么我找的纯C语言实现的库无法转码(格式错误)

 五、拉流和转码分析

 1.输入的流拉去

        这部分网上的资源很多,这部分比较简单。

2.输出部分

        (1)文件创建

        (2)写入MP4格式头

        (3)循环的读取数据,解析并写入

        (4)写入MP4格式尾

3.注意点

        AVFormatContext 对应的结构体,输入和输出是分开的,很多代码写的都是一个,这个需要特别注意。

4.avformat_write_header返回-22问题

        这个主要是因为没有设置对应的参数造成的

        核心函数:avcodec_find_encoder、avformat_new_stream、avcodec_open2

5.写入实时数据

        这块的东西,网上很多,主要就是那么几块,协议研究一下就可以。

六、ffmpeg转码指令

(1)把h264文件转码为MP4格式

        ffmpeg -i test.264 test.mp4

(2)其他

        可以自行查阅

七、ffmpeg提供的demo

 个人建议,最好是先看看这些demo

        

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/901689
推荐阅读
相关标签
  

闽ICP备14008679号