当前位置: 首页 > ai >正文

H264几个参数说明

注:文章来源为我的笔记

sps、pps计算宽高:

// 宽高计算公式
width = (sps->pic_width_in_mbs_minus1+1) * 16;
height = (2 - sps->frame_mbs_only_flag)* (sps->pic_height_in_map_units_minus1 +1) * 16);
// 是否需要进行图像剪切 
if(sps->frame_cropping_flag)
{unsigned int crop_unit_x;unsigned int crop_unit_y;if (0 == sps->chroma_format_idc) // monochrome{crop_unit_x = 1;crop_unit_y = 2 - sps->frame_mbs_only_flag;}else if (1 == sps->chroma_format_idc) // 4:2:0{crop_unit_x = 2;crop_unit_y = 2 * (2 - sps->frame_mbs_only_flag);}else if (2 == sps->chroma_format_idc) // 4:2:2{crop_unit_x = 2;crop_unit_y = 2 - sps->frame_mbs_only_flag;}else // 3 == sps.chroma_format_idc // 4:4:4{crop_unit_x = 1;crop_unit_y = 2 - sps->frame_mbs_only_flag;}width -= crop_unit_x * (sps->frame_crop_left_offset + sps->frame_crop_right_offset);height -= crop_unit_y * (sps->frame_crop_top_offset + sps->frame_crop_bottom_offset);
}

level级别计算:

比如分辨率:1920x1080, 参考帧率:60 的 h264 码流是哪个 level 呢?

H.264 的宏块大小为 16×16,每帧宏块的个数为分辨率除以 16

  • max-fs = ceil( width / 16.0 ) * ceil( height / 16.0 )

计算得:8100

每秒宏块数量为每帧宏块数乘以帧率.

  • max-mbps =max-fs * 参考帧率 (60)

计算得:486000

质量参数控制:

1.QP(Quantization Parameter)量化参数,支持设置最大值和最小值范围,取值(0 ~ 51),QP 值越小,量化误差越小,视频质量越高,码率也会越大;QP 值越大,量化误差越大,视频质量越低,但码率越小。

2.CQP(Constant  Quantization Parameter)恒定量化参数,设置后每一帧都使用相同的 QP 值。使用CQP模式时,设置的最大最小QP值范围无效。

3.CRF(Constant Rate Factor)恒定质量因子(x264编码器提供),通常取值18 ~ 28之间(和QP一样),CRF 模式会根据帧的内容复杂度动态调整 QP 值。例如,对于运动较多的帧,QP 值会增加;对于静止或运动较少的帧,QP 值会减小,从而保持整个视频的主观质量恒定,而不是每帧的质量恒定。使用CRF模式时,设置的最大最小QP值范围仍然有效,并可以更精细的控制QP值调整范围。

4.preset参数(x264编码器提供)

取值(速度由快到慢):ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow and placebo。编码越快,输出图像质量越差。

http://www.xdnf.cn/news/19293.html

相关文章:

  • Maya基础:烘焙动画
  • 网络爬虫是自动从互联网上采集数据的程序
  • VSCode的launch.json配置文件在C++项目调试中的全面应用
  • VB.NET 多次添加字符串数据,再转换成一个数组
  • 设计模式概述:为什么、是什么与如何应用
  • 【开题答辩全过程】以 纳雍县咚咚屋服装租赁管理系统为例,包含答辩的问题和答案
  • Java全栈开发面试实录:从基础到微服务的实战解析
  • 路由控制(二):路由策略和策略路由
  • CICD实战(1) - 使用Arbess+GitPuk+Docker快速实现项目打包构建、docker部署
  • 订餐后台管理系统-day06菜品分类模块
  • C++算法学习专题:前缀和
  • 动规一些理解
  • 【MySQL】练习12-4:启用GTID并配置循环复制
  • YUV格式详解
  • Unity笔记(九)——画线功能Linerenderer、范围检测、射线检测
  • 算法之链表
  • 电科金仓KingbaseES V9数据库:国产数据库的自主创新与行业实践深度解析
  • C#异步编程
  • 深度学习量化双雄:PTQ 与 QAT 的技术剖析与实战
  • 异步编程以及promise的一些拓展
  • 【lua】二进制数据打包和解析
  • Nginx反向代理及配置
  • 趣味学RUST基础篇(枚举模式匹配)
  • C语言强化训练(1)
  • Sequelize ORM - 从入门到进阶
  • SIEPIC工具和PDK安装
  • FastAPI 核心实战:精通路径参数、查询参数与数据交互
  • 解决FreeBSD无法使用pkg安装任何程序
  • 入站5年,首创3年,习惯养成4个月,从问题求助者到方案提供者转变,我的CSDN之旅
  • 刚上线的PHP项目被攻击了怎么办