用X264编码以后的H264数据
输入的数据准备好了,编码后的数据都在x264_nal_t的数组。我这里设置的参数是Baseline Profile,所以编码后没有B帧,将编码后的数据保存分析后发现,第一次编码的时候会有4个NAl,分别是SPS、PPS、SEI、I帧,也即分别是00 00 00 01 67、 00 00 00 01 68、 00 00 01 06、00 00 01 65开头的四个数据段,这里注意的是SEI和I帧的开头貌似X264中就是00 00 01的起始头了,应该是和源码中这样写的关系,不过没有什么大碍,就是后面在删除这些起始头的时候会有两种判断吧。然后编码第二帧图像,得到的就是一个NAL了,是P帧 00 00 01 41.
这里还讲几个我遇到的一些参数和困惑,起初我发现在分析数据的时候,第一次是5个NAl,即SPS、PPS、SEI、I帧、I帧,第二次编码的时候是2个NAL,即P帧、P帧,这是怎么发生的呢,原来是有多个线程跑的原因,m_param.b_sliced_threads= false;后就会发现正常了。
还有就是我要控制一个I后几个P,即一个GOP的数目,那么需要设置m_param.i_keyint_max 的值。另外就是在m_param.b_repeat_headers = 1; // 重复SPS/PPS 放到关键帧前面,这样设置有利于解码的是每个I帧都会有SPS和PPS。
用X264编码以后的H264数据的更多相关文章
- 使用ffmpeg将BMP图片编码为x264视频文件,将H264视频保存为BMP图片,yuv视频文件保存为图片的代码
ffmpeg开源库,实现将bmp格式的图片编码成x264文件,并将编码好的H264文件解码保存为BMP文件. 实现将视频文件yuv格式保存的图片格式的測试,图像格式png,jpg, gif等等測试均O ...
- WebRTC VideoEngine超详细教程(三)——集成X264编码和ffmpeg解码
转自:http://blog.csdn.net/nonmarking/article/details/47958395 本系列目前共三篇文章,后续还会更新 WebRTC VideoEngine超详细教 ...
- X264编码流程详解(转)
http://blog.csdn.net/xingyu19871124/article/details/7671634 对H.264编码标准一直停留在理解原理的基础上,对于一个实际投入使用的编码器是如 ...
- 【FFMPEG】从内存中获取H264数据并进行decode
版权声明:本文为博主原创文章,未经博主允许不得转载. 使用ffmpeg解码h264数据其实相对使用x264进行视频编码是简单了许多的,因为ffmpeg提供了一个decoding_encoding.c的 ...
- iOS VideoToolbox硬编H.265(HEVC)H.264(AVC):2 H264数据写入文件
本文档为iOS VideoToolbox硬编H.265(HEVC)H.264(AVC):1 概述续篇,主要描述: CMSampleBufferRef读取实际数据 序列参数集(Sequence Para ...
- x264编码的图像出现乱码的问题
将YUV进行x264编码的时候,建议将 i_threads 参数设置成 X264_SYNC_LOOKAHEAD_AUTO//* 取空缓冲区继续使用不死锁的保证. 否则有可能编码出来的数据会出现IDR_ ...
- jmeter随笔(9)--有两种编码风格,导致数据乱码
问题:在一个网站,有两种编码风格,导致数据乱码 解决办法: 1.首先设置jmeter的配置文件 2.针对要求是utf-8格式的这样的请求,做单独的编码处理(beanshell处理) 3.运行,在htm ...
- Android camera采集视频 X264编码
参考 http://blog.csdn.net/zblue78/article/details/6058147 感谢 ExperiencesOfCode 硬件平台:CPU Intel G630 @2. ...
- 【ASP.NET Web API教程】5.2 发送HTML表单数据:URL编码的表单数据
原文:[ASP.NET Web API教程]5.2 发送HTML表单数据:URL编码的表单数据 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本系列教程,请先看前面的内 ...
随机推荐
- 关于VS中的调试信息输出
有时候一些项目的调试信息不方便输出到界面中,比如ASP.NET或者WPF之类的 可以使用Debug.WriteLine()等方法输出到"输出"窗口,不过"输出" ...
- java.lang.IllegalStateException: The specified child already has a parent. You must call removeView
java.lang.IllegalStateException: The specified child already has a parent. You must call removeVi ...
- 微信H5支付.NET版本备忘
微信H5支付.NET版本备忘
- vue2.0 代码功能片段
1.代码片段截取 checkAll: function(flag){ this.checkAllFlag = flag; this.productList.forEach(function(value ...
- LeetCode: Integer to Roman 解题报告
Integer to Roman Given an integer, convert it to a roman numeral. Input is guaranteed to be within t ...
- mysql data_add data_sub
DATE_SUB() 函数从日期减去指定的时间间隔. 语法 DATE_SUB(date,INTERVAL expr type) date 参数是合法的日期表达式.expr 参数是您希望添加的时间间隔. ...
- 纯CSS3实现漂亮的价格表样式代码
分享一款纯CSS3实现漂亮的价格表样式代码是一款常见的主机商发布产品价格信息页.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div id="main" ...
- 一款基于TweenMax.js的网页幻灯片
之前介绍了好多网页幻灯片.今天给大家带来一款基于TweenMax.js的网页幻灯片.这款幻灯片以不规则的碎片百叶窗的形式切换.切换效果非常漂亮.一起看下效果图: 在线预览 源码下载 实现的代码. ...
- 一款html5和css3实现的小机器人走路动画
之前介绍了好多款html5和css3实现的动画,今天要给大家带来一款html5和css3实现的小机器人走路动画.该实例的人物用html5绘画的,动画效果是html5和css3实现的.一起看下效果图. ...
- vim自动跳转到引用的函数
安装: yum install ctags 在你代码的根目录下执行:比如/data/www/test/trunkctags -R * 打开文件只能在根目录下打开就可以,比如 vim appl ...