发布时间:2025-12-09 17:42:38 浏览次数:4
在libx264中有一些参数是预先设置好的,直接使用就可以,不用自己去设置。
例如参考帧的数量,B帧的数量
keyint/min-keyint
keyint就是GOP size,一个GOP有多大,可以容纳多少帧。
这个参数越大,则可以容纳的B帧就越多,获得的压缩率就越高。
如果是实时实时传输时怕丢包,引起卡顿,可以将这个参数设置的小一些。
min_keyint 场景切换的时候如果发现变化率超过了scenecut设定的值并且超过了min_keyint的值就插入一个I帧
scenecut
场景切换的时候变化多少算切换,有的是60%的不同算作切换,有的是80%。
bframes
连续B帧的数量 一般不超过3帧
ref
参考帧的数量,解码器中存放的参考帧的数量,可以设置为3帧,5帧等
no-deblock/block
不使用/使用去块滤镜,
no-cabac
是否使用cabac压缩
例如设置码流的大小,动态码流和静态码流。
Qp 关注量化器,
比crf码流大且与bitrate/crf互斥。一般而言crf都能代替QP模式,不过QP因为完全不需要预测所以它会运行地更快些。
Bitrate
关注码流,无法控制质量
crf
关注质量,默认是23,数值越低越好
量化器的取值
Qmin 默认为10
Qmax 默认为51
Qpstep 两帧之间量化器的最大变化,默认为4
例如宏块的划分。进行宏块查找时的搜索算法。
partitions
默认是p8x8,b8x8,i8x8,i4x4,也可以根据需要设置16x16,8x16等等。
说明:H.264在压缩前会被切分为16×16大小的宏块。这些块可被进一步切分成更小的块,利用此参数,可以控制不同的帧类型(I、P、B)开启更细的帧切分(8×8、4×4),具体参数如下:
I帧:i8x8、i4x4;
P帧:p8x8(会同时开启p16x8和p8x16)、p4x4(会同时开启p8x4和p4x8)
B帧:b8x8(会同时开启b18x8和b8x16)
另外,也可以设置为’none’和’all’。一般而言,开启p4x4不会带来多少的质量提升,而且它极其耗时,是个性价比比较低的选项。
ME运动评估算法
说明:设置全局的运动预测方法,有以下5种选择:
dia(四边形搜索) —— 最简单的搜索,从最乐观的情况开始预测,在运动矢量的上下左右分别偏移一个像素对比,选择其中最好的,循环直至找不到更匹配的运动矢量。
hex(六边形搜索) —— 和菱形差不多的策略,不同的是,它在6边形的6个顶点上进行rang-2的搜索,它实现了比dia有效率地多的搜索而几乎不会使用更多的耗时,它是普通编码任务一个很好的选择。
umh(不均匀的多六边形搜索) —— 显著地比hex要慢,但它尝试进行复杂多六边形的搜索,以避免错过那些难以找到的运动矢量。与hex和dia不同的是,merange参数直接任意大小控制umh的搜索半径。
esa(全局搜索) —— 高度优化的全局智能搜索,在**预测器的merange范围内进行运动搜索。在全局面进行运动向量的算术对比,虽然计算过程并不慢,但好事仍比umh有显著提升,而且并不会带来太多质量方面的提升。所以,对于日常的编码任务来说,它不是特别有用。
tesa(变换全局搜索) —— 使用一种算法,效果近于对全局的每个运动矢量进行Hadamard 变换比对。搜索方式上和esa很像,但是效果比esa好一点点,耗时也多一点点。
SAR
设置输出的宽高比
fps
帧率
leve
设置输出的规格
在使用ffmpeg命令行时可以发现一些参数命令有些许改变,这是因为,ffmpeg对这些参数进行了再封装。
ffmpeg -vsync 1-async 1-i xxx.flv-b:v 200k-maxrate 250k-bufsize 400k-pix_fmt yuv420p-vcodec libx264-coder 1-refs 3-bf 5-flags +loop -deblock -1:1-partitions i4x4 + i8x8+p8x8+b8x8-me_method umh-g 60-keyint_min 30-qmin 0 -qmax 69 -qdiff 2out.mp4vsync 视频同步
async 音频同步
-b:v 200k 控制视频码流是200k
-maxrate 最大码流
-bufsize 缓冲区大小
-pix_fmt 原始数据的格式
-vcodec 使用的编码库
-coder 1 使用熵编码 cabac
-refs 3 参考帧的数量是3
-bf b帧的最大数量是5
-flags +loop -deblock 使用去块化的滤波器
-partitions 编码前被切分的宏块
-me_method 宏块匹配算法
-g gop的大小
-keyint_min gop的最小值
-qmin 0 -qmax 69 -qdiff 2 qbdiff就是Qpstep
http://www.chaneru.com/Roku/HLS/X264_Settings.htm
https://sites.google.com/site/linuxencoding/x264-ffmpeg-mapping