【视频编码压制】关于近两年的视频压制学习总结种种

一.关于视频编码的最基本知识


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/rmvbasf格式需要定义帧率;
#convertfps=true
防止转换可变桢率的RMVBWMV时出现影音不同步

AVISource("x:\test.avi",false)
#
加载AVI文件,false表示禁止音频

Levels(0,1.5,255,0,255)
#
亮度调整滤镜,第二个参数就是用来调整亮度的,默认1.5,数值一般在12之间选择

Tweak(0,1,20,1)
#
画面综合调整滤镜,调节色度,饱和度,亮度,对比度
#
色度:-180.0~180.0,默认0.0。正数趋向红色,负数趋向绿色。改变影片的整体色调
#
饱和度:0.0~10.0,默认1.00.0为黑白。一般不超过1.5,可使影片色彩更加艳丽
#
亮度:-255.0~255.0,默认0.0。一般取10-20
#
对比度:0.0~10.0,默认1.0一般不超过1.4

Sharpen(0.2)
#
锐化滤镜,数值一般在0.10.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中的语句,加载srtssaass字幕

VobSub("x:\test")
# AVS
插件Vsfilter中的语句,加载idxsub字幕,可以不用后缀

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\
切边或者加黑边或者颜色调整AddBordersCropTweak........
3\
输出尺寸LanczosResize
4\
加载字幕textsub
5\
截取影片片段Trim


7)X264 H264

首先呢..需要明确两个概念
H.264 x264
H264是一个标准.即 高度压缩数字视频编解码器标准.通常被称为AVC/H264..或直接简称AVC(Advanced Video Codec)
x264则是实实在在的视频编码器(codec)..很显然它是符合H264标准的视频编码器.
不能将H264与x264混淆..虽然现在绝大多数情况下都使用符合H264规范的x264编码器..但这两个的概念是不同的.
去年到今年一直小范围火热的H265..
继H264标准后新制定的视频编码标准
围绕着现有的视频编码标准H.264..保留原来的某些技术..同时对一些相关的技术加以改进..
H265就瞄准了低码率传送高清视频..毫无疑问这对于在线视频来说是个巨大的福利..


但其对应的X265编码器(HEVC - High Efficiency Video Codec)仍在实验阶段..其面对成熟的x264编码器来说..基本只在低码率表现上有一定优势..但综合编码耗时以及兼容性来说..x265目前并未大规模应用..

8)通常会见到的码率控制模式有

ABR [ Average Bitrate ](平均目标码率模式)
CBR [ Constant Bitrate ](固定码率模式)
2pass..3pass..npass(二次..三次..n次编码模式..严格来说也属于平均目标码率模式.但其码率浮动较ABR高出不少.)
CRF [ Constant Ratefactor ] (固定码率系数模式)
QP [ Constant Quantizer ] (固定量化值模式)

点到即止。。。

9)megui
....嗯  神器
本人有一期用megui压的特效字幕,有空就写教程吧
https://www.bilibili.com/video/av10559615/





















你可能感兴趣的:(【视频编码压制】关于近两年的视频压制学习总结种种)