ffmpeg 从mp4上提取H264的nalu
来源:互联网 发布:2016coc连弩升级数据 编辑:程序博客网 时间:2024/05/17 03:34
1.获取数据
ffmpeg读取mp4中的H264数据,并不能直接得到NALU,文件中也没有储存0x00000001的分隔符。下面这张图为packet.data中的数据
从图中可以发现,packet中的数据起始处没有分隔符(0x00000001), 也不是0x65、0x67、0x68、0x41等字节,所以可以肯定这不是标准的nalu。
其实,前4个字0x000032ce表示的是nalu的长度,从第5个字节开始才是nalu的数据。所以直接将前4个字节替换为0x00000001即可得到标准的nalu数据。
2.获取pps及sps
pps及sps不能从packet获得,而是保存在AVCodecContext的extradata数据域中。如下:
如何从extradata中解析出sps及pps呢?ffmpeg中提供了一个流过滤器"h264_mp4toannexb"完成这项工作,关键代码如下
一般情况下,extradata中包含一个sps、一个pps 的nalu, 从上面的代码中容易看出extradata的数据格式。分析后的sps及pps依然储存在extradata域中,并添加了起始符。从代码中还可以看出,上面的函数会将sps、pps及packet中的数据,都copy到poutbuf指示的内存中,如果不需要copy到指定内存,直接给buf参数传入空值即可。
3.使用ffmpeg的流过滤器获取sps及pps
流过滤器"h264_mp4toannexb", 在av_register_all()函数中会被注册。用法示例如下:
ffmpeg读取mp4中的H264数据,并不能直接得到NALU,文件中也没有储存0x00000001的分隔符。下面这张图为packet.data中的数据
从图中可以发现,packet中的数据起始处没有分隔符(0x00000001), 也不是0x65、0x67、0x68、0x41等字节,所以可以肯定这不是标准的nalu。
其实,前4个字0x000032ce表示的是nalu的长度,从第5个字节开始才是nalu的数据。所以直接将前4个字节替换为0x00000001即可得到标准的nalu数据。
2.获取pps及sps
pps及sps不能从packet获得,而是保存在AVCodecContext的extradata数据域中。如下:
如何从extradata中解析出sps及pps呢?ffmpeg中提供了一个流过滤器"h264_mp4toannexb"完成这项工作,关键代码如下
一般情况下,extradata中包含一个sps、一个pps 的nalu, 从上面的代码中容易看出extradata的数据格式。分析后的sps及pps依然储存在extradata域中,并添加了起始符。从代码中还可以看出,上面的函数会将sps、pps及packet中的数据,都copy到poutbuf指示的内存中,如果不需要copy到指定内存,直接给buf参数传入空值即可。
3.使用ffmpeg的流过滤器获取sps及pps
流过滤器"h264_mp4toannexb", 在av_register_all()函数中会被注册。用法示例如下:
0 0
- ffmpeg 从mp4上提取H264的nalu
- ffmpeg 从mp4上提取H264的nalu
- ffmpeg 从mp4上提取H264的nalu
- ffmpeg 从mp4上提取H264的nalu
- ffmpeg 从mp4上提取H264的nalu
- ffmpeg 从mp4上提取H264的nalu
- ffmpeg 从mp4上提取H264的nalu
- ffmpeg 从mp4上提取H264的nalu
- ffmpeg 从mp4上提取H264的nalu
- ffmpeg 从mp4上提取H264的nalu
- ffmpeg 从mp4上提取H264的nalu
- ffmpeg 从mp4上提取H264的nalu
- ffmpeg 从mp4上提取H264的nalu
- ffmpeg 从mp4上提取H264的nalu
- ffmpeg 从mp4上提取H264的nalu
- ffmpeg 从mp4上提取H264的nalu
- ffmpeg 从mp4上提取H264的nalu
- ffmpeg从MP4中提取h264的NALU
- 【算法】动态规划DP浅析(1)
- #include<iomanip>中的iomanip的一些用法
- cin.getline()与cin.get()
- Android之解析XML文件三种方式(DOM,PULL,SAX)
- 内核模块编程---hello world
- ffmpeg 从mp4上提取H264的nalu
- 321UVA【错误原因】怕黑先生别墅找卧室
- 蓝桥杯 历届试题 大臣的旅费
- 客户端上显示csdn上的各类别下的的文章列表 (制作csdn app 三)
- spring 的七大模块
- 《Joint segmentation and NER using dual decomposition in Chinese discharge summaires》——笔记
- 51Nod1264 线段相交
- JDBC->Hibernate->Mybatis演化
- Trees CodeForces