x264参数 部分2 帧理篇

本经验有严重错误,请删除

工具/原料

  • 新建文本文档
  • 电脑

I帧 P帧 B帧的科普

  1. 1

    图片似乎有点大, 所以为了手机端能看清我会再分开讲~

    关于IBP帧的科普, 只能说, 恭喜你找到了全宇宙最简单易懂的版本, 那么上图!

  2. 2

    首先是I帧, 可以理解为面包片儿.

    在视频中往往会有很多画面信息相似的帧. 比如背景固定, 人物走动.

    I帧会主要储存背景的画面(所以体积最大). P帧和B帧会通过参考, 直接把背景复制过来用.

  3. 3

    然后就是B帧和P帧, 可以理解为夹在其中的各种酱料, 馅儿什么的.

    当背景固定, 人物走动时, P帧会负责记录人物移动的瞬间, 顺便参考I帧以补充整个背景(所以体积第二大)

    B帧直接通过参考I帧和P帧补充自己的画面(所以体积最小~)

  4. 4

    还有一个IDR帧, 这个帧的作用就是隔离. 但同时也储存一个I帧的画面.

    当一个GOP还未完成而画面又突然转变时, 如果不进行隔离的话, 后面的P帧, B帧都会参考到错误的信息, 所以IDR帧的第一个任务就是隔离.

    而IDR帧本身又储存了I帧的信息, 这样后面的帧又不会变得没有信息可参考. 所以直接把IDR帧叫做I帧也是没问题的~

  5. 5

    最后是GOP, 在标题中所说的可能容易被误解

    一个GOP通常从I帧开始, 再从B帧结束, 再进入下一个相同的循环. 在三明治中就能很好的理解了. 当然取用IDR帧也是有可能的!

    ***如果接下来的内容难以看懂, 完全可以先跳到第3, 4篇. 再回头看会轻松很多!

开始正题

  1. 1

    紧接着--vf或者其他参数, 将这些参数全部复制到你的文本文档里.

    --crf --aq-mode --keyint --min-keyint --qcomp --chroma-qp-offset --no-dct-decimate

    接下来就跟着本经验把这些参数一个个设置好吧~

1.就这么设, 不用多想

  1. 1

    关于crf以及为什么要设crf: baike.baidu.com/item/x264#4_5

    总结: crf模式 

    上传动漫电影 --crf 22-23

    普通录像 --crf 24

    Rip党推荐16-18.

    *为什么不用2pass?

    2pass, Npass等是指第一遍分析整个视频, 第二到N遍照着码率大的地方压缩. 适合小分辨率. 720p以上尤其容易炸掉画质. 

    上传用视频普遍分辨率小的年代可以使用2pass.

  2. 2

    --aq-mode <量化值再分配>

    让码率分配更加合理的功能, 有1, 2, 3, 4个值.

    --aq-mode 1 总体不如 --aq-mode 2

    --aq-mode 4 与 --aq-mode 2 相似

    --aq-mode 3 总体比 --aq-mode 2 好

    所以推荐 --aq-mode 3.

2.帧的处理, 简称...

  1. 1

    --keyint (key frame interval)值设整数+四舍五入.

    控制IDR帧的最大间距. 进度条只能从每个I帧开始播放. 

    增大/减小: 进度条可用播放落点距离增加/减小.

    太大: 进度条播放落点减少, 节省很多码率.

    太小: 体积和码率增加, 提升视频质量

    默认: --keyint 250

    推荐:

    电影/视频/动漫, 一般所有情况

    --keyint 帧率×10 (最大10秒一个I帧或更小)

    短视频, 观众不会拖动进度条

    --keyint infinite (几乎没有I帧)

    教程视频, 观众经常拖动进度条

    --keyint 帧率×5 (最大5秒一个I帧或更小, 反正教程类视频没有激烈场景, 多放几个I帧码率不会超限~)

    进度条最大落点间隔计算: [keyint值 ÷ 视频帧率]秒以内.

  2. 2

    --min-keyint 值设整数, 要四舍五入.

    用途: 最小允许的I帧间距

    增大/减小: 和 --keyint 相同.

    太大: 不推荐

    太小: 推荐

    默认: 自判定

    推荐(所有情况): --min-keyint 1 (方便x264精确的放置IDR帧)

  3. 3

    --scenecut 值设整数

    用途: 计算前后帧的相似度来判断场景变更, 触发即放置IDR帧. 

    增大/减小: 增加/降低场景变化触发的敏感度

    推荐1: 保持默认 (--scenecut 40).

    推荐2(MAD,高燃剪辑,MLG,动漫OP剪辑, 全特效广告): 增大到 --scenecut 50 以保证视频质量.

    推荐3(模拟钢琴, 音游录屏): --scenecut 30

3.再量化!

  1. 1

    说到 --qcomp 讲这个值就不得不先讲 --mbtree (默认开启)说起. 这里得借用一部分教程里说的(我做了些修改让它更易看懂).

    1.

    mbtree是x264后期版本添加的功能, 负责搜索多个前后帧的宏块

    2.

    前后帧, 以及同一帧中相似的宏块(见图)数量越多, 量化愈低, 画质, 体积更大更好. 反之宏块数量越少, 量化愈高, 画质和体积更低更小.

    3.

    --qcomp 默认设为 0.6, 最小/最大应设在 0.45-0.75 之间. 负责控制每个宏块量化程度的分配.

    4.

    高于0.6 = 强化量化分配, 弱化宏块搜索 应对 高分辨率+高码率环境

    等于0.6 = 默认量化分配, 默认宏块搜索 应对 高分辨率+低码率环境

    低于0.6 = 弱化量化分配, 强化宏块搜索 应对 低分辨率+高码率环境

    推荐:

    1(一般教程视频/无打斗动漫/PPT录屏/模拟钢琴): 保持默认 0.6

    2(电影/录像/一般广告/一般游戏录屏): --qcomp 0.67

    3(一般动漫/FPS游戏录屏/GIF图收集/高阶魔方还原): --qcomp 0.71

    4(高燃剪辑/含闪光战斗动漫/全特效广告/东方Project录屏): --qcomp 0.75

    5(演唱会现场/夜店现场/MLG): --qcomp 0.8

    6(分辨率480p以下): --rc-lookahead 250 qcomp 0.45

    7*(炸裂特效MLG(建议分辨率480p以下)): --rc-lookahead 250 qcomp 0.28

    最难调的参数, 没有之一. 既然能在尽量不拖慢压制速度的情况下降低码率, 所以还是认真设吧... 顺便rc-lookahead后面会讲到, 现在用到的话先复制进去不用管.

4.再压缩!

  1. 1

    --no-dct-decimate

    用途: 关闭"肉眼不容易看到的细节拿掉, 减低文件体积的功能"的参数, 不会大量拖慢压制速度.

    推荐1: 不写这个参数, 增加压缩率且只略微降低画质.

    推荐2(Rip党/YouTube):  当然要写, 造成画面素质降低的参数不能忍!

5.颜色调整!

  1. 1

    --chroma-qp-offset 值设整数

    用途: 给色度的量化值增加一个偏移量, 可以设负值. 

    默认: 不设

    推荐1: 不设

    推荐2(片源质量高): --chroma-qp-offset 2 (x264会自动将yuv 422或yuv 420的视频减2, 这样设可以把值扳回来)

    *如何知道视频是RGB, YUV420, 444还是422? 

    情况1: 如果你安装了potplayer播放器, 那么播放片源按Tab键就能知道咯~

    情况2: 要自行搜索你的播放器如何查看视频信息.

    注: 

    YUY2 就是 YUV 4:2:2

    AYUV = 带透明通道的 YUV 4:4:4

    其他情况一律不用写~

    以上, x264中最难的参数部分已经被你攻略啦, 剩下的就很简单啦~

EX: 视频修复/研究用

  1. 1

    --sar 强制更改视频比例

    比如16:9的视频本应显示4:3, 加一个 --sar 4:3 就能修复.

    --colormatrix 

    告诉播放器视频的真正播放标准(旧NTSC, 新NTSC, PAL, SD等)

    当视频播放标准错误时用此功能修复. 这个参数除非要放到电视节目里否则不用设, 具体不明(得到解释的程度太低)

    --no-mbtree 

    这个参数添加后基本就和高压视频说拜拜咯, 不过有时Rip党为了保留噪点会用到(噪点会占用码率所以一般不推荐保留)~

    --log-file

    压制并顺便导出一份压制过程记录. 这个是给搞参数研究的人用的, 大概.

举个栗子

  1. 1

    片源:

    幻想万华镜 [VCB-S]~The Memories Of Phantasm~[01][Hi10p_1080p][BDRip][x264_2flac].mkv

    重要信息:

    帧率 23.98, 输入颜色: YUY2, 片源质量高.

    参数决定!

    --crf 22.5 --aq-mode 3 --keyint 300 --min-keyint 1 --qcomp 0.75 --chroma-qp-offset 2

  2. 2

    片源:

    XXX曲子的synthesia钢琴演示.mp4

    重要信息:

    帧率 60, 输入颜色: AVC1, 片源质量高.

    参数决定!

    --crf 22 --aq-mode 3 --keyint 600 --min-keyint 1 --scenecut 35 --qcomp 0.6

OUT: 没用的参数

  1. 1

    --fade-compensate 

    拆东墙补西墙, 增加渐变画面的质量. 所以有了10bit色深就被淘汰了.

    --level

    x264自己会选, 不用设置.

    --profile

    控制 x264 的解码对不同播放设备支持程度的功能, 现在的设备大多都支持所以不用设置.

    --no-cabac

    这个参数添加后基本就和高压视频说拜拜咯, 这次连Rip党也没有待见它的了~

  2. 2

    --vbv-bufsize 

    --vbv-init

    --vbv-maxrate

    视频加载多少就算缓冲好了, 这个真没啥好调的, 就算调了也不能增加网速, 是吧?

    *限淛視頻呮能緩洊, 芣能茬線譒倣(篨悱緩洊慲)哋糼能

  3. 3

    --qp

    --ratetol

    --pbratio

    --ipratio

    量化值不变压缩模式以及这个模式下会用到的参数, 不推荐.

  4. 4

    --nr (noise reduction)

    执行快速降噪, 就算用也不如外部滤镜或视频编辑软件的插件. 所以没人用~

    --fgo 

    强行保留噪点, 无助于压缩而未被官方x264采取的参数. 要用更高的crf, 甚至开 --me tesa 来控制体积. 非常不适合上传用视频.

  5. 5

    --ABR

    --aquality

    目标码率模式(Birate)及该模式下所用到的参数. 用途是使x264在给定的码率压缩, 控制文件最终体积用. 但输出质量会很差所以不推荐.

  6. 6

    --pass 

    --slow-firstpass 

    控制多次分析-压缩的模式以及该模式下用到的参数, 但实际上质量难以控制所以不如crf.

  7. 7

    --opencl

    除非使用x264单文件, 否则一般的压制编码程序会默认开启显卡辅助.

    --open-gop

    同上.

    --slices

    编码蓝光时设为4,除此之外不要使用这个选项,除非你知道你在干什么.

    -b-pyramid strict

    用于蓝光编码格式.

    --tff 

    启用分行压制, 要用到的话那么估计你已经在电视台工作了(大概).

注意事项

  • 这个难度的参数配置本来该写在最后的, 但因为IPB帧的科普必须在先所以不得不排在前面, 唉
  • 发表于 2018-01-30 00:00
  • 阅读 ( 905 )
  • 分类:其他类型

0 条评论

请先 登录 后评论
admin
admin

0 篇文章

作家榜 »

  1. xiaonan123 189 文章
  2. 汤依妹儿 97 文章
  3. luogf229 46 文章
  4. jy02406749 45 文章
  5. 小凡 34 文章
  6. Daisy萌 32 文章
  7. 我的QQ3117863681 24 文章
  8. 华志健 23 文章

联系我们:uytrv@hotmail.com 问答工具