- 1:基础知识
- 2:处理流程
- 3:问题
- 4:个人使用的方法与参数
基础知识
这类源一般有720x480个像素,但是显示比例为16:9,是因为这些像素并不是正方形像素,而是32:27的矩形像素。
VFR是可变帧率的英文简称,与常见的CFR相对,VFR的视频在同一个视频的不同片段一般有着不同的帧率。
对于常见的视频格式来说,一个单独视频流文件,默认是CFR的。
制作VFR的视频,需要将单独的视频流与时间码文件一同封装至容器中。
mkvmerge支持时间码文件,而mp4box不支持时间码文件。
DVD源的primary、transfer与matrix一般均为NTSC的BT.601 525/SMPTE 170M;而720P的默认primary、transfer与matrix一般为BT.709。
处理流程
读入视频,不要进行插帧为cfr的动作,需要保证处理后的视频帧数与源视频一致。
将视频的matrix转为"R'G'B'",transfer转为"linear RGB",primary转为"SRGB",输入神经网络超分辨率,再将primary、transfer与matrix转为输出分辨率对应的值。
一般情况下,输出视频最好为标准正方形像素的视频,因此需要将图像重采样为输出的分辨率。
在封装时,需要从源视频容器中抽取中标准的时间码文件,将单独的视频流封装入容器时,记得同时指定视频轨的时间码文件。
封装完成后,检查成品视频与源视频的时长是否一致,帧数是否一致。
问题
为什么不做vfr->cfr的转换?
若输出帧率小于源最大帧率,那必定会丢弃有效帧。
若输出帧率大于源最小帧率,那必定会插入重复帧。
为什么要转换primary、transfer与matrix,不能在输出视频中标上吗?
很多渲染器不认视频的头信息标志,只按照视频的分辨率来认定primary、transfer与matrix。
假如使用了实时补帧插件,它们一定不会把primary、transfer与matrix等元信息传给渲染器。
个人使用的方法与参数
由于本人属于初学者,还在入门中,下文仅供参考。
若使用waifu2x进行超分辨率,建议使用"upconv_7_anime_style_art_rgb"这个模型,这个模型对于视频处理来说比较合适,因为它的层数较少,并且比初版模型"anime_style_art_rgb"运行得更快,因为它把放大这一步留到了网络的最后面,而且效果一般来说更好。当然如果有足够好的设备,有足够多的时间,而且不在意时间开销,用网络层数最深的模型效果最好。
可以选用waifu2x的降噪等级noise1,noise0对于充满各种各样的瑕疵的源来说还是不够,noise1就可以去掉大部分扎眼的瑕疵。noise等级越高,waifu2x的抗烂线收线能力越强。
也可以选用nnedi3进行超分辨率。
根据情况,可以做一定的aa处理。
如果使用waifu2x,那建议保留YUV444输出,不至于要暴力地将色度分辨率强行减半。使用YUV444输出相应地提高一点色度的量化参数即可。
压制参数选择,建议Hevc-10bit版本crf不低于18,Avc-8bit版本crf不低于19。