txtyb's Blog

The quieter you be, the more you can hear.

  1. 1. 使用avs2pipemod输出yuv420p管道feed给x264压制
    1. 1.1. commands:
    2. 1.2. mmd.avs:
  2. 2. 使用FFmpeg输出yuv420p管道feed给svt-av1压制
  3. 3. 使用FFmpeg裁剪视频

使用avs2pipemod输出yuv420p管道feed给x264压制

commands:

1
2
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: 输出。

https://vcb-s.nmm-hd.org/

mmd.avs:

1
2
video = ImageSource("H:\rurudommd\g1.0Adapted\%04d.png", start=31, end=6668).AssumeFPS(30).LanczosResize(2560, 1440).ConvertToYUV420
video

video: Class clip

ImageSource(): 以图像序列作为输入源,以0001.png为文件名规则,导入0031.png6668.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。

本文最后更新于 天前,文中所描述的信息可能已发生改变