一.关于视频编码的最基本知识
1)码率:Bit Rate,指视频或音频文件在单位时间内使用的数据流量,该参数的单位通常是Kbps,也就是千比特每秒。通常2000kbps~3000kbps就已经足以将画质效果表现到极致了。码率参数与视频文件最终体积大小有直接性的关系。
2)帧率:Frame Rate,是用于测量画面显示帧数的量度。所谓的测量单位为每秒显示帧数(Frames per Second,缩写:FPS)。如电影的帧率一般是25fps和29.97fps,而第一人称射击游戏等要求画面极为顺畅的特殊场合,则需要30fps以上的效果,高于60fps就没有必要了。
码率的定义是视频文件体积除以时间。单位一般是Kbps(Kbit/s)或者Mbps(Mbit/s)。注意1B(Byte)=8b(bit)。所以一个24分钟,900MB的视频:
体积:900MB = 900MByte = 7200Mbit
时间:24min = 1440s
码率:7200/1440 = 5Mbps = 5000 Kbps
3)Two Pass:需要运算两次,可以理解为先进行一次全局的计算,收集画面信息,并将这些信息记录到信息文件。第二次才根据采集的信息,正式进行压缩,生成压缩文件。
4)MKV vs MP4,主要的区别在于:
1. MKV支持封装FLAC作为音频,MP4则不支持。但是MP4也可以封装无损音轨(ALAC,虽然普遍认为ALAC的效率不如FLAC优秀)
2. MKV支持封装ASS/SSA格式的字幕,MP4则不支持。一般字幕组制作的字幕是ASS格式,所以内封字幕多见于MKV格式
5)关于YUV
YUV,分为三个分量,Y:表示明亮度(Luminance或Luma),也就是灰度值;而 U 和 V :表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。
与我们熟知的RGB类似,YUV也是一种颜色编码方法,主要用于电视系统以及模拟视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样可以显示完整的图像,只不过是黑白的,这样的设计很好地解决了彩色电视机与黑白电视的兼容问题。并且,YUV不像RGB那样要求三个独立的视频信号同时传输,所以用YUV方式传送占用极少的频宽。
详细的YUV和RGB转换需要参照VCB-S教程 https://vcb-s.nmm-hd.org/Twilight%20Council/
6)关于AviSynth
AviSynth是一个媒体滤镜处理工具,AVS是其语句脚本,稍微有点视频编码常识都该知道它及其好处
其语法信息以下
Ladplugin("x:\test\vsfilter.dll")
#加载AVS的各种第三方插件,如果xxx.dll放在Avisynth\plugins里是无需写入这段代码的,avs会自动调用
DirectShowSource("x:\test.rmvb",fps=23.976,convertfps=true)
#不需要加载的内置滤镜,支持大部分视频文件只需指定路径及文件名,fps=23.976对于rm/rmvb和asf格式需要定义帧率;
#convertfps=true防止转换可变桢率的RMVB和WMV时出现影音不同步
AVISource("x:\test.avi",false)
#加载AVI文件,false表示禁止音频
Levels(0,1.5,255,0,255)
#亮度调整滤镜,第二个参数就是用来调整亮度的,默认1.5,数值一般在1到2之间选择
Tweak(0,1,20,1)
#画面综合调整滤镜,调节色度,饱和度,亮度,对比度
#色度:-180.0~180.0,默认0.0。正数趋向红色,负数趋向绿色。改变影片的整体色调
#饱和度:0.0~10.0,默认1.0。0.0为黑白。一般不超过1.5,可使影片色彩更加艳丽
#亮度:-255.0~255.0,默认0.0。一般取10-20
#对比度:0.0~10.0,默认1.0。一般不超过1.4
Sharpen(0.2)
#锐化滤镜,数值一般在0.1到0.5之间,使得画面更加锐利,副作用是会带来躁点
Undot()
#可以使用一个或多个无参数,直接加上就行了,除躁点效果微乎其微,但制作DVDRIP时一般都加上
WAVSource("x:\test.wav")
#读取WAV格式的音频
AC3Source("x:\test.ac3")
#读取AC3的音频
MPASource("x:\test.mpa")
#读取MPG的音频
DelayAudio(WAVSource("x:\test.wav"),100)
#把声音延迟100毫秒
Textsub("x\test.srt")
# AVS插件Vsfilter中的语句,加载srt、ssa、ass字幕
VobSub("x:\test")
# AVS插件Vsfilter中的语句,加载idx、sub字幕,可以不用后缀
AddBorders(8,32,8,32)
#左右各、上下各增加8像素、32像素的黑边(必须为偶数)
基本操作d
Crop(16,8,-16,-8)
#左切,上切,-右切,-下切(必须为偶数)
LanczosResize(720,480)
#把分辨率改变为480*272
Trim(1234,5678)
#截取影片片段
ConvertToYV12()
#改变色彩环境滤镜,因为X264编码器不支持RGB色彩环境,要转换YV12才能正常压制
基本的AVS脚本主要包含以下部分
1\视频路径DirectShowSource
2\切边或者加黑边或者颜色调整AddBorders、Crop、Tweak........
3\输出尺寸LanczosResize
4\加载字幕textsub
5\截取影片片段Trim
7)X264 H264