来自两年前在字幕组群里的聊天记录
飞鱼自己都不记得了
现在这些好像也不太用得上,总之存下来别丢了【?
假设你这里的m2ts文件是未加密的。接下来要通过一些信息来判断片源的格式
首先读meta信息,有两个信息比较重要,一个是实际分辨率(长宽比),另一个是是否是隔行
先说实际分辨率。一般来说BD原盘都是19201080
但是不免有些奇葩,比如14401080
然后加一个DAR标签
播放机读到这个标签的时候,就会按照标签的提示对画面进行拉伸
但是你压片的时候x264是不会自动读这个的,于是就要看清楚是否需要手工拉伸
另外一个确定片源是逐行扫描还是隔行扫描,如果是隔行扫描必须要进行反交错。如果是逐行扫描则不必。
但是有一些片源,虽然meta信息里标注是隔行扫描,实际画面是逐行的画面,所以看到隔行扫描之后不一定要反交错
隔行扫描也有几种情况,加上前面说的实际是逐行的情况。如果你看到视频片源是隔行,那么接下来需要打开一个播放器,关闭播放器的所有自动扫描功能(几乎所有的播放器都有自动反交错)。或者用AVS专用预览器,就是上次我发给蟹让他压电视ts里提到的那个工具
这里主要是确认隔行扫描视频里每一帧的情况
对于隔行扫描视频,不存在帧的概念,只有“场”
两场组成一帧。分别叫上半场(T)和下半场(B)
一般来说,上半场和下半场是交替排列的。比如T1 B1 T2 B2 T3 B3…..这种情况。
但是由于历史原因,有一类的片子,场是这样排的:T1B1 T1B2 T2B3 T3B3 T4B4,这样就把原来的4帧的片源拉成了5帧播放。在逐帧确认时,表现为5帧里面糊3帧
我们把这种视频叫做Telecine视频
总结一下:确认片源状况:
- 确认片源比例是否和图像比例一致,如果不一致需要添加手工拉伸
- 确认片源是否为隔行扫描(交错源),如果是隔行扫描需要反交错:
2.1 确认片源是否5帧里面糊3帧,如果是,说明视频是Telecine的,需要ivtc。否则只需普通的反交错。
之后是确认音频和字幕轨,一般来说BD都会有多条音频和字幕轨。但是一般压制是只选择其中一条处理。字幕另说,先说音频。
首先用播放器确认需要提取的是哪一条音频轨,注意音频轨是从0开始编号的。(字幕轨也是)
然后使用dgindex工具对原m2ts格式的视频进行处理,选择需要的一条音频轨提取。一般会提取出PCM文件(在windows上会被保存为wav格式)
使用neroaacenc或者其他什么aac编码器将这条音频轨编码为aac格式,码率根据自行需要处理。一般BD不会有音频偏移,无需处理音频偏移问题,有些GUI可能会问你这个值,设为0即可。(压电视ts的时候通常需要格外注意音频偏移)
这样我们就处理好音频轨了。
一般字幕组压片都是为了加自己的字幕,官方字幕大家都不爱看,所以一般不用管。但是如果需要字幕需要额外处理字幕轨。
蓝光的字幕一般是sup或者srt格式,srt是纯文本(不带格式),sup是带时间轴的图像格式,需要配合ocr软件才能提取出字幕文本。
如果要提取使用tsmuxer就能提取。
接下来我按照不需要字幕的格式讲解
然后就是编写avs文件。编写avs文件的时候需要根据之前的片源情况加入手工拉伸滤镜(一般常用LanczosResize滤镜),和反交错滤镜。常用的反交错滤镜有tivtc、tdeint,qtgmc。
这三个的适用范围是:telecine视频用tivtc,那种上下半场交替排列的视频用tdeint。奇葩的情况用qtgmc(qtgmc特别特别特别特别特别特 别 的 慢)
这里多提一下qtgmc的原理。和一般的反交错滤镜寻找最匹配的场然后合并成一帧的原理不同,qtgmc是一个用机器学习算法训练过的拉伸库,可以将每个像素拉伸为自己的两倍大同时尽量保证内容不失真。所以qtgmc反交错的原理是,把每场的内容拉伸为一帧。这在操作后会引起帧率变化,比如30i会变成60p,使用时格外注意这点就行
写好avs文件之后,就可以用x264读入这个avs文件,进行画面的压制了。压制好之后会获得一个x264视频流
最后用mkvmuxer或者mp4muxer将上面压好的视频流和音频流混入一个容器里,压制过程就结束了。