使用avs2pipemod输出yuv420p管道feed给x264压制
commands:
1 | avs2pipemod -y4mp mmd.avs | x264.2851kMod.x86_64.exe - --demuxer y4m --preset slower --tune film --crf 20 --threads 16 --keyint 480 --min-keyint 1 --bframes 6 --rc-lookahead 70 --merange 24 --subme 10 --psy-rd 0.8:0.15 --no-fast-pskip --aq-mode 3 -o mmd.264 |
-y4mp
: 输出yuv420p至stdout
-
: 从stdout
接收数据流作为输入
--preset
: Preset(效率预设):
效率预设值。在编码效率和编码速度(时间)之间进行取舍。越往右滑越慢。最快的 ultrafast 速度媲美 GPU 加速,最慢的 placebo 所需的时间可以是 ultrafast 的近百倍。Preset 越高,x264 的码率效率越高,意味着单位码率能做到的画质越好。
采用你最大能忍受的预设值,一般推荐在 slow/slower/veryslow 三档。x264 会自动设置很多参数来调节你对速度与效率的取舍。vcb-s 所用的参数一般基于–preset “veryslow”
--tune
: Tuning(画质预设)
画面预设值。告诉 x264 参数应该为哪种片源优化:
None:默认设置,适合一般/混合类的片源;
Animation:动漫,动画(虽然实际高质量动漫 BDRip 极度不推荐)
Film:电影。通常演唱会、非动漫特典,都采用这个预设。
Grain:在噪点明显的源上,致力于保留噪点。注意这个模式在搭配 crf,尤其是低 crf,体积惊人,因为花费了很多码率来保留噪点。tune grain 往往比较适合极高码率的编码,因为其码率分配策略优先是细节保留,而不是编码效率。
still image:静态画面,适合那种例如相册类的片源
--crf
: Const Quality/Const Ratefactor,crf 模式,固定质量模式。x264 用一种结合人心理学,估算出来的值,来衡量视频的目测质量,这就是 rf(ratefactor),用浮点数表示,0 为无损,越高质量越差。crf 就是在视频前后采用恒定的 rf,从而使得视频前后的目测质量几乎一致。crf 模式下,码率的时间分配效果是最理想的,也是最常用的模式。
一般人常见的视频,crf 设置在 18-26 左右。通常采用 19-21.5 就能使得 Rip 看上去很不错。如果需要绝对好的质量可以降低到 16,但是码率也会很高。注意,crf 在搭配不同的参数前提下,实际造成的目测效果还是有差距的,甚至可能很大,因此不能一概的认为 crf 代表目视质量。命令行:–crf 23,23 是默认值。
一般 vcb-s 用的 10bit 1080p BDRip,crf 选择在 16~18 之间。
--keyint
: Maximum GOP Size,–keyint,规定了最远两个 IDR 帧之间的距离。
--min-keyint
: Minimum GOP Size,–min-keyint,规定了最近两个 IDR 帧之间的距离。
--bframes
: Number of B-Frames, 最大允许的连续 B 帧数量。这个值越大,编码时间稍有提高,对压缩率也有帮助。一般认为真人电影设置为 38,动漫设置为 612 左右比较合适。
--rc-lookahead
: 设置为帧率的 3 倍,差不多是 70
--merange
: me/subme/me_range 三个选项,共同组成 ME 的参数组合。ME 是以编码时间换效率的另一套参数(之前是 –ref/–bframes 构成的 Frame)。
--psy-rd
: Psy-rd Strength(–psy-rd): 心理学优化强度。psy 相关是一种 x264 引入的主观优化:在欠码的时候,人眼宁愿看到失真,也不愿看到大范围的模糊。虽然这种失真对客观的还原度来说不利,但是它有利于保留画面纹理,编码前后的图像看上去违和感较低,细节锐度较好。
--no-fast-pskip
: 关闭Fast P Skip
--aq-mode
: Adaptive Quantizers,简称 AQ。没有 AQ,x264 会倾向于在平面和纹理处降低码率。造成的效果就是线条部分看上去还行,但是平面大幅度 block,纹理烂掉。AQ 的作用就是来防止码率在纹理和平面处被过分的降低。
AQ Mode: 选择 AQ 的算法。Disable(aq-mode=0,不用 aq),Variance AQ(aq-mode=1)和 Auto-Variance AQ(aq-mode=2)。tMod 版 x264 还加了 mode=3/4/5,只不过在 megui 中需要用自定义命令行来启用。
一般来说,mode=3 最好,最适合动漫,但是码率稍高;mode=1 效果中等,比较安全,不容易出现教烂的帧。 mode=2 比较省码率,但是偶尔容易出现烂帧。mode=4 是由 2 优化而来,更保险一点。
一般来说,日常压动漫就选 3,压真人特典选 1 或者 4 。
-o
: 输出。
mmd.avs
:
1 | video = ImageSource("H:\rurudommd\g1.0Adapted\%04d.png", start=31, end=6668).AssumeFPS(30).LanczosResize(2560, 1440).ConvertToYUV420 |
video
: Class clip
ImageSource()
: 以图像序列作为输入源,以0001.png
为文件名规则,导入0031.png
至6668.png
的所有帧。
AssumeFPS()
: 指明输入为30fps
LanczosResize()
: 缩放视频为2560x1440p
ConvertToYUV420
: 转换输出为yuv420
使用FFmpeg输出yuv420p管道feed给svt-av1压制
example:
1 | ffmpeg -framerate 30 -start_number 31 -i "H:\rurudommd\g1.0Adapted\%04d.png" -loglevel quiet -f yuv4mpegpipe -pix_fmt yuv420p - | SvtAv1EncApp.exe -i stdin --tune 0 --crf 18 --preset 4 --keyint 480 --output svttest.ivf |
-framerate 30
: 因为输入的是图片序列,所以需要指定帧率
-loglevel quiet
: 关闭FFmpeg的log输出,避免与编码器的log重叠
--tune 0
: 使编码器对VQ(Visual Quality)做优化
使用FFmpeg裁剪视频
example:
1 | ffmpeg -ss 1:38 -t 8 -i mmdcrf18.mkv -c copy cut.mp4 |
从1:38开始截取8s的视频,copy全部流且不重新封装,保存为cut.mp4。