尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

libx264编码参数简介

libx264编码参数简介 目录一、码率控制三选一最核心互斥二、preset速度 ↔ 压缩效率的总开关三、tune在 preset 之后、手设参数之前生效四、GOP 与帧结构五、编码分析六、VBV硬限码率直播/硬件解码必用七、实时/低延迟专项RTMP、WebRTC 网关、采集卡八、profile / level兼容性闸门九、线程与日志十、两条可直接抄的工程模板1. 存档压片质量优先2. RTMP 推流延迟优先十一、一句话总结觉得有用就请您帮忙点赞转发收藏吧您的鼓励是我创作的动力多谢看官。由于能力水平有限文中的错误或不严谨的地方在所难免还请批评指正。本文系统拆解了 libx264 的核心编码参数体系覆盖从入门到工程落地的关键逻辑首先明确码率控制三模式——CRF固定主观质量、ABR平均码率、CQP固定QP的互斥关系与适用场景给出 CRF 18~28 的实用选型区间其次厘清 preset速度/压缩效率权衡与 tune内容适配的层级关系点出zerolatency是实时推流核心开关再详解 GOP 帧结构、VBV 硬限码率解决直播峰值卡顿、profile/level 兼容性边界并对比默认分析参数与手动调优边界。最后提供「存档压片」「RTMP 低延迟推流」两套可直接抄的参数模板总结“preset 定效率、CRF 定画质、VBV 定网络、tune 定内容”的心智模型避免新手盲目调参。全文兼顾 FFmpeg 命令行与 C API 映射偏工程实战而非手册堆砌。一、码率控制三选一最核心互斥x264 内部只认三种 RC 模式qp / bitrate / crf 不能同时设。优先级bitrate qp crf。模式参数目标文件大小画质分布适用CQP-qp 24/rc.i_rc_methodX264_RC_CQP固定 QP不可控每帧同损耗算法验证ABR-b:v 2000k/X264_RC_ABR平均码率可控一般1-pass 流媒体CRF-crf 23/rc.f_rf_constant固定主观质量不可控最好​存档/压片CRF 范围 0–518-bit0 无损23 默认18≈视觉无损6 码率减半-6 翻倍。10-bit x264CRF 范围 0–63。工程建议存档/母版-crf 18~20普通压片-crf 21~23Web/720p-crf 24~28qpmin/qpmax/qpstepQP 上下限与帧间跳变限制默认 0/51/4。ipratio1.4 / pbratio1.3I/P、P/B 帧间 QP 比例。aq-mode1方差 AQ、aq-strength1.0暗部/纹理再分配码率CRF 下必开。二、preset速度 ↔ 压缩效率的总开关x264_param_default_preset()或-presetultrafast → superfast → veryfast → faster → fast → medium(默认) → slow → slower → veryslow → placebo(别用)越慢 → 同画质体积越小veryslow 比 medium 小 10–20%但 CPU 时间指数涨。preset 内部改的关键项了解即可别手改除非你懂mehex→umh→tesasubme0→11ref1→16bframes、b-adapt、rc-lookahead、trellis、cabac、8x8dct、partitions经验批量转码veryfast/fast珍藏slow实时ultrafast。三、tune在 preset 之后、手设参数之前生效tune不和 preset 互斥按内容微调film真人电影轻微降 deblockanimation动画加 ref/bframes、强 deblockgrain保留胶片颗粒aq-strength↓、deblock↓stillimage幻灯片fastdecode关 cabac/deblock解端省 CPUzerolatency实时推流神参等价设bframes0 rc-lookahead0 sync-lookahead0 no-mb-tree1 sliced-threads1四、GOP 与帧结构参数含义建议keyint(i_keyint_max)GOP 长度10×fps如 25fps→250直播→30~60min-keyint最小关键帧间隔直播设keyintscenecut场景切换插 I 帧阈值关实时no-scenecut1bframes(i_bframe)连续 B 帧数默认 3slow 下 6~8b-adaptB 帧放置策略0/1/22 最优但慢ref(i_frame_reference)参考帧数3~5 通用8 吃 DPB硬件解码慎超 4~6b-pyramid允许 B 帧作参考开High profileweightp/weightb权重预测开zerolatency 关五、编码分析meumh运动估计算法dia/hex/umh/tesasubme9子像素精修级别partitionsp8x8,b8x8,i8x8,i4x4宏块划分8x8dct1High profile 特性cabac1熵编码关掉省解码 CPU 但体积涨 10–15%deblock0:0环内去块alpha/beta 可调no-fast-pskip1防平区域跳过导致细节丢rc-lookahead前向决策帧类型默认 40zerolatency0mb-tree宏观块树 RC实时关mbtree0六、VBV硬限码率直播/硬件解码必用CRF 也能加 VBV变成“质量优先但不超峰峰”-crf 23 -maxrate 2500k -bufsize 5000k对应rc.i_vbv_max_bitraterc.i_vbv_buffer_sizerc.f_vbv_buffer_init0.9ABR VBV 就是“CBR-ish”推流标配。七、实时/低延迟专项RTMP、WebRTC 网关、采集卡C 层经典初始化x264_param_default_preset(p, ultrafast, zerolatency); p.i_keyint_max 30; // 1s30fps p.b_repeat_headers 1; // 每个 IDR 带 SPS/PPSFLV 必需 p.rc.i_rc_method X264_RC_ABR; p.rc.i_bitrate 2000; p.rc.i_vbv_max_bitrate 2000; p.rc.i_vbv_buffer_size 4000; p.b_mb_tree 0; x264_param_apply_profile(p, high);FFmpeg 等价-c:v libx264 -preset ultrafast -tune zerolatency \ -x264-params keyint30:min-keyint30:no-scenecut1:bframes0 \ -b:v 2000k -maxrate 2000k -bufsize 4000k -f flv rtmp://...八、profile / level兼容性闸门baseline老移动/iOS 硬解禁 cabac/8x8dct/B-pyramidmain过渡high通用默认选它high10/422/44410bit/无损浏览器不支持level_idc按分辨率帧率查表1080p30 一般 4.04.1 保险。设了profile后不能 crf 0 / qp 0 无损。九、线程与日志i_threads0自动逻辑核嵌入式可设 1~2 防同步开销i_log_levelX264_LOG_INFO调试用b_repeat_headers封装格式FLV/MP4 流式写入必须 1十、两条可直接抄的工程模板1. 存档压片质量优先ffmpeg -i in.mov -c:v libx264 -preset slow -tune film \ -crf 20 -x264-params ref4:meumh:subme9:b-adapt2:aq-mode2 \ -profile:v high -c:a aac -b:a 192k out.mkv2. RTMP 推流延迟优先ffmpeg -i in.mp4 -c:v libx264 -preset ultrafast -tune zerolatency \ -x264-params keyint30:min-keyint30:no-scenecut1:bframes0:rc-lookahead0 \ -b:v 2500k -maxrate 2500k -bufsize 5000k -pix_fmt yuv420p \ -f flv rtmp://server/app/stream十一、一句话总结preset 决定“花多少 CPU 换压缩率”crf 决定“画质底线”tune 决定“对什么内容偏心”VBV 决定“网络/解码器能不能扛”keyint/bframes 决定“延迟和 seek 体验”。​新手永远先crf preset slow tune 内容类型别手调 subme/me/aq 直到你能用x264 --fullhelp解释每一行输出。
返回列表