H264
老衲不出家
寨都码农一枚,平常喜欢关注音视频技术,从事音视频行业小几年,主要是音视频编解码,语音处理,移动端音视频开发,博客是一个自我记录的地方,如果不妥之处,请高人不吝赐教,如有侵权,请联系我删除。tanningzhong@126.com
展开
-
H.264 视频 RTP 负载格式
1. 网络抽象层单元类型 (NALU)NALU 头由一个字节组成, 它的语法如下: +---------------+ |0|1|2|3|4|5|6|7| +-+-+-+-+-+-+-+-+ |F|NRI| Type | +---------------+F: 1 个比特. forbi转载 2016-09-02 16:47:25 · 401 阅读 · 0 评论 -
X264码率控制总结2——x264码率控制方法概述
X264码率控制方法概述x264/doc/ratecontrol.txtA qualitative overview of x264's ratecontrol methodsBy Loren Merritt历史笔记:本文件是过时的,但相当一部分叙述仍然是准确的,以下是一些重要的码率控制算法更新:1. 默认情况下,MB-tree代替了qcomp用以计算各帧的复杂度,MB转载 2016-05-31 14:22:19 · 564 阅读 · 0 评论 -
X264码率控制总结1——ABR,CQP,CRF
1. X264显式支持的一趟码率控制方法有:ABR, CQP, CRF. 缺省方法是CRF。这三种方式的优先级是ABR > CQP > CRF.[cpp] view plain copy if ( bitrate ) rc_method = ABR; else if ( qp || qp_constant ) rc_method = CQP; else转载 2016-05-31 14:20:59 · 5337 阅读 · 0 评论 -
X264 利用MinGW 在windows 下的编译
1 第一步,工欲善其事必先利其器,首先下载X264和MinGW,这两个代码都是开源的代码,可以在开源网站上直接获得。尤其说一下MinGW,网址为http://www.mingw.org/,一开始看了一些网友的博客,也按着其提供的链接下载了文件,可是总是出现各种各样的问题,包括msys的路径配置啊什么的,搞了好久没搞对。后来直接下载了最新的MinGW,安装在了C盘下,打开直接就能用了。在下载MinG原创 2015-09-18 13:52:58 · 510 阅读 · 0 评论 -
x264强制编一个关键帧
为了使x264在编码过程中强制编出一个IDR帧,可以通过更改x264_picture_t pic中的一个成员变量i_type,在编码一帧之前,将pic.i_type赋值为X264_TYPE_IDR即可。int x264_encoder_encode( x264_t *, x264_nal_t **pp_nal, int *pi_nal, x264_picture_t *pic_in, x264原创 2016-11-02 15:34:56 · 1851 阅读 · 0 评论 -
264编码器的DSP移植与优化
目前,H.264编码器的实现版本主要有:JM、T264、X264。其中JM是H.264官方源码,实现H.264所有特征,但其程序结构冗长,只考虑引入各种新特性以提高编码性能,忽略编码复杂度,其复杂度极高,不宜实用;T264编码器编码输出标准的264码流,解码器只能解T264编码器生成的码流;X264是编码器注重实用,在不明显降低编码性能的前提下,努力降低编码的计算复杂度。这里,用X264编码器对D转载 2016-11-14 17:01:11 · 939 阅读 · 0 评论 -
解读x264_param_default 参数
void x264_param_default( x264_param_t *param ) { /* 开辟内存空间*/ memset( param, 0, sizeof( x264_param_t ) ); /* CPU自动检测 */ param->cpu = x264_cpu_detect(); param->i_th转载 2016-12-14 17:37:15 · 1351 阅读 · 0 评论 -
H264码流打包成RTP包
H264码流打包成RTP包的代码如下:[cpp] view plaincopy#include #include #include #include #include #include //#include "mem.h" #define PACKE转载 2016-11-22 09:15:32 · 594 阅读 · 0 评论 -
X264在VS2015环境下编译
一、配置YASM1、网址:http://yasm.tortall.net/Download.html2、下载VS版本: Win32 VS2010 .zip (for use with VS2010+ on 32-bit Windows) Win64 VS2010 .zip (for use with VS2010+ on 64-bit Windo原创 2016-12-13 21:10:02 · 3571 阅读 · 3 评论 -
x264码率控制参数详解
x264码率控制参数详解 -q, --qp Force constant QP (0-51, 0=lossless)默认:无说明:三种可选的码率控制方法(bitrate, CQP,CRF)之一。设置x264使用固定QP模式。设定的QP将被作为P帧的量化参数,I帧和B帧的量化参数由–ipratio and –pbratio参数进一步算出。CQP模式使用固定的QP转载 2016-12-09 11:33:21 · 2433 阅读 · 0 评论 -
x264命令参数与代码对应关系
最近弄x264,整理了一下x264参数的对应关系,做了一张excel表格, 如下图:原创 2016-12-16 16:17:58 · 612 阅读 · 0 评论 -
关于对H264码流的TS的封装的相关代码实现
1 写在开始之前 在前段时间有分享一个H264封装ps流到相关文章的,这次和大家分享下将H264封装成TS流到相关实现,其实也是工作工作需要。依照上篇一样,分段说明每个数据头的封装情况,当然,一样也会加上rtp头,方便以后的这方面到需求,如果开发不需要的话,可 以自行屏蔽掉,当然需要主要buffer指针的移动情况 2 封装的各个头到规则要点转载 2017-07-14 11:24:06 · 701 阅读 · 1 评论 -
简析H264分包组包
ps:此文是参照某大神文章所写,恕找不到地址,抱歉!1. 网络抽象层单元类型 (NALU) NALU 头由一个字节组成, 它的语法如下: +---------------+ |0|1|2|3|4|5|6|7| +-+-+-+-+-+-+-+-+ |F|NRI| Type | +---------------+原创 2016-08-30 16:09:07 · 2585 阅读 · 0 评论 -
H.264句法和语法总结(十四)CAVLC 残差句法
residual_block_cavlc( coeffLevel, maxNumCoeff ) { C Descriptor for( i = 0; i coeffLevel[ i ] = 0 // coeff_token 指明了非零系数的个数,拖尾系数的个数。 coeff_token转载 2016-09-02 17:44:06 · 420 阅读 · 0 评论 -
H.264句法和语法总结(十三)残差句法
residual( ) { if( !entropy_coding_mode_flag ) residual_block = residual_block_cavlc else residual_block = residual_block_cabac转载 2016-09-02 17:42:39 · 802 阅读 · 0 评论 -
H.264句法和语法总结(一)句法元素的分层结构
在 H.264 定义的码流中,句法元素被组织成有层次的结构,分别描述各个层次的信息,如下图所示 在H.264 中,句法元素共被组织成 序列、图像、片、宏块、子宏块五个层次。 在这样的结构中,每一层的头部和它的数据部分形成管理与被管理的强依赖关系,头部的句法元素是该层数据的核心,而一旦头部丢失,数据部分的信息几乎不可能转载 2016-09-02 17:16:33 · 608 阅读 · 0 评论 -
H.264句法和语法总结(二)NAL层句法
NAL&VCL: H.264 的功能分为两层,即视频编码层(VCL)和网络提取层(NAL,Network Abstraction Layer)。VCL 数据即编码处理的输出,它表示被压缩编码后的视频数据序列。在 VCL 数据传输或存储之前,这些编码的 VCL 数据,先被映射或封装进 NAL 单元中。 每个 NAL 单元包括一个原始字节序列负荷(RBSP)、一组对应于视频编码数据的转载 2016-09-02 17:23:49 · 801 阅读 · 0 评论 -
H.264句法和语法总结(三)序列参数集层(SPS)句法
seq_parameter_set_rbsp( ) { // profile_idc level_idc 指明所用 profile、level profile_idc // constraint_set0_flag 等于 1 时表示必须遵从附录 A.2.1 所指明的所有制约条件。等于 0 时表示不必遵从所有条件。 constraint_转载 2016-09-02 17:24:39 · 923 阅读 · 0 评论 -
H.264句法和语法总结(四)图像参数集语义
pic_parameter_set_rbsp( ) { // pic_parameter_set_id 用以指定本参数集的序号,该序号在各片的片头被引用。 pic_parameter_set_id // seq_parameter_set_id 指明本图像参数集所引用的序列参数集的序号。 seq_parameter_set_id转载 2016-09-02 17:25:35 · 610 阅读 · 0 评论 -
H.264句法和语法总结(五)片头句法
slice_header( ) { // first_mb_in_slice 片中的第一个宏块的地址, 片通过这个句法元素来标定它自己的地址。 要注意的是在帧场自适应模式下,宏块都是成对出现,这时本句法元素表示的是第几个宏块对,对应的第一个宏块的真实地址应该是2 * first_mb_in_slice first_mb_in_slice /* sl转载 2016-09-02 17:26:43 · 1081 阅读 · 0 评论 -
H.264句法和语法总结(六)参考帧队列重排序(reordering)句法
ref_pic_list_reordering( ) { if( slice_type != I && slice_type != SI ) { // ref_pic_list_reordering_flag_l0 指明是否进行重排序操作,这个句法元素等于1 时表明紧跟着会有一系列句法元素用于参考转载 2016-09-02 17:28:39 · 2164 阅读 · 0 评论 -
H.264句法和语法总结(七)加权预测句法
pred_weight_table( ) { // luma_log2_weight_denom 给出参考帧列表中参考图像所有亮度的加权系数,是个初始值luma_log2_weight_denom 值的范围是 0 to 7。 luma_log2_weight_denom // chroma_log2_weight_denom 给出参考帧转载 2016-09-02 17:35:18 · 866 阅读 · 0 评论 -
H.264句法和语法总结(八)参考图像序列标记 (marking)操作的语义
重排序(reordering)操作是对参考帧队列重新排序,而标记(marking)操作负责将参考图像移入或移出参考帧队列。dec_ref_pic_marking( ) { if( nal_unit_type = = 5 ) { // no_output_of_prior_pics_flag 仅在当前图像是 IDR 图像时转载 2016-09-02 17:35:59 · 1216 阅读 · 0 评论 -
H.264句法和语法总结(九)片层数据句法
slice_data( ) { if( entropy_coding_mode_flag ) while( !byte_aligned( ) ) // cabac_alignment_one_bit 当熵编码模式是CABAC 时,此时要求数据字节对齐,即数据从下一个字节的第一个比转载 2016-09-02 17:37:36 · 588 阅读 · 0 评论 -
H.264句法和语法总结(十一)宏块层预测句法
mb_pred( mb_type ) { if( MbPartPredMode( mb_type, 0 ) = = Intra_4x4 | | MbPartPredMode( mb_type, 0 ) = = Intra_16x16 ) { if( MbPartPredMode( mb_type, 0 )转载 2016-09-02 17:41:27 · 679 阅读 · 0 评论 -
H.264句法和语法总结(十二)子宏块预测句法
sub_mb_pred( mb_type ) { for( mbPartIdx = 0; mbPartIdx // sub_mb_type[ mbPartIdx ] 指明子宏块的预测类型,在不同的宏块类型中这个句法元素的语义不一样。 sub_mb_type[ mbPartIdx ] for( mbPartI转载 2016-09-02 17:42:04 · 490 阅读 · 0 评论 -
H264码流中SPS PPS详解
原文出处:https://zhuanlan.zhihu.com/p/278962391 SPS和PPS从何处而来?2 SPS和PPS中的每个参数起什么作用?3 如何解析SDP中包含的H.264的SPS和PPS串?1 客户端抓包在做客户端视频解码时,一般都会使用Wireshark抓包工具对接收的H264码流进行分析,如下所示:在这里我们可以看到对解码视原创 2017-08-09 10:28:24 · 2756 阅读 · 0 评论