DVD压制:PAR, VFR, film/hybird…

(……能不能换个好点的标题。)

最近利用空闲时间把手头经常看的一些DVDISO都压一份观看用,结果发现这里面的小问题还不少。结果一折腾起来就没个头了。

这篇文章比较长,稍微给个简介。本文主要讲了这么几个问题(不按顺序):

  • DVD的PAR处理
  • Color matrix相关
  • DVD压制实践:
    • film DVD、hybrid DVD的压制细节
    • DVD回放时FPS问题(0.1%)以及带来的章节desync问题探究
    • 几款不同软件压制DVD的对比

Pixel aspect ratio(PAR)

第一个问题就是PAR。拿常见的可变宽荧幕NTSC来说,之前我都是压制的时候手动resize成848(最接近853的mod 14)×480之类的,没怎么细究过。最近想换用别人推荐的视频SAR不动,靠容器指定DAR的方式。结果用megui随便跑了一个,怎么出来的结果是…876×480?

打开megui的AVS creator一看,才发现默认的DAR是什么“ITU 16:9 NTSC (1.823169)”,而不是16:9。稍微研究了下,发现这个问题相当复杂,而且你去看ITU的Rec.是不能直接得出什么结论的——ITU是描述的analog(信号是多少xx赫兹之类的)的情况,所以到底是什么PAR其实是根据ITU的recommendation(主要是601和470,可能还有别的)推算出来的。

好在,这种问题有很多人已经研究过了,这里先提供一些链接(维基百科也可以先看看,看了下虽然没有明显错误,但是说得颇混乱):

简单总结下。

  • NTSC的4:3的PAR应该是4320/4739,或者更准确的数字:38800/42651。这是用信号扫描时间推算出来的。如果是anamorphic widescreen(可变宽屏),那就乘以4/3变成5760/4739(更准确的数字:155200/127953)。
  • 之所以是这个数字,是因为NTSC数字视频的实际视频区域(active picture)应该是710.85×486(这个数字是用标准中的analog的sample rate/time推算出来的)——这个区域应该被display为4:3或16:9。稍微算下就知道,5760/4739的PAR可以保证710.85/486的SAR正好变成16:9的DAR。
  • 1.823169(8640/4739)这个数字,正是套用同样的PAR,去乘720/480这个DVD的SAR得到的DAR(720/480*5760/4739=8640/4739)。
  • 可以看到,由于DVD的720×480的宽是大于有效区域的。所以,理论上DVD视频的左右两边应该有黑边。
  • 等等,那486比480多出来的那6条线呢?那6条线在制作DVD的时候直接出血掉了。实践上,可能近年制作/录制的NTSC视频来说,这6条线其实从一开始就不存在。你可以理解为把上面那个实际视频区域710.85×486按比例缩放——变成702又2/27×480就好。剩下的自然是黑边啦,所以你有时候也会见到704×480的DVD(少见),因为要完整呈现有效区域,没必要720(720/704/480这些都是16的倍数。MPEG1/2年代编码器的限制之一。要不然也不用折腾这么多了)。
  • 所以,当你入手一个720×480的DVD,保证正确比例的做法是用5760/4739的PAR来encode为一个876×480的视频(875更接近,不过如果是encode一般有mod 2限制。或者直接指定DAR)。结果应该是视频内容部分是真·16:9,两边多黑边。

但是!这些都是理想情况,实践上有一个非常重要的区别。现在,许多(可以说绝大多数)新的DVD早已经是原生digital制作,也因此已经完全按照720×480无黑边制作了——也就是说,正确的播放方法不应该遵守ITU,而是直接拉成16:9播放/压制(相当于PAR=32/27)。当然,如果你发现视频左右两侧有不小的黑边,那应该考虑用ITU试试(或者简单地直接切黑边后拉到16:9)。至于4:3,似乎还是遵守ITU的比较多,毕竟都是很老的碟子。可以参考这个用户的rule of thumb。另外,据我观察播放器在playback DVD的时候都是直接16:9/4:3了事,没有用ITU resizing的。还好对播放比较新的DVD没影响。另外,不要小看这一点AR变形,如果对比观看,用对了和用错了还是相当明显的。

编辑:关于上面这段,不一定一定正确。请参见补遗文

Color相关

这个其实和DVD没啥关系,但是到戏肉之前先垫垫场(啥)。

其实就是我前几天没事儿干观察了下手机拍摄的视频的元数据,发现居然是:

Color range : Full
Color primaries : BT.601 PAL
Transfer characteristics : BT.601
Matrix coefficients : BT.470 System B/G

这里的奇怪之处有:1. 居然是full range;2. 居然是PAL;3. 居然是BT.601。

前两个只是奇怪,最后一个就不太对,因为HD视频理应用BT.709。但是,如果录制的时候的转换矩阵确实是用601,至少有tag,播放的时候不会有问题。

这其实不是重点,只是因为这个,我突然好奇起来Color primaries、Transfer characteristics、Matrix coefficients这仨有啥区别,尤其是这里还出现了个我没见过的BT.470 System B/G。

Doom9这个帖子非常有帮助。不过我只是浅尝辄止,所以下面非常粗略地总结下。

  • Color primaries:指定gamut的范围(三个原色[即“primaries”]的位置,白点位置)。理论上回放时只和校准(显示器)颜色有关,所以绝大部分播放器不会使用这个属性。
  • Transfer characteristics:指定gamma ramp。譬如,你可以指定为linear等。几乎所有播放器都无视,直接用那个标准的nonlinear的ramp(见下文)。
  • Matrix coefficients:这个是比较关键的也几乎是唯一会被播放器读取并采用的,指定了YUV和RGB的转换矩阵。

这几个属性的标准方面:

Color primaries有多种标准(维基有个):

  • BT.601 NTSC = SMPTE 170M = SMPTE C
  • 老的NTSC 1953 primaries = BT.470 System M = FCC 1953
  • BT.601 PAL = BT.470 System B/G
  • SMPTE 240M:BT.709之前的一个HD标准,未被广泛使用
  • BT.709
  • BT.2020 = BT.2100

Transfer characteristics:

  • BT.601 = BT.470 System B/G (PAL) = BT.470 System M (NTSC) =SMPTE 170M (NTSC) = BT.709,即:所有常见标准的gamma曲线其实都一样。
  • BT.2020:根据维基百科,也一样,只不过常数精度更高

Matrix coefficients:

  • BT.601 = BT.470 B/G (PAL) = SMPTE 170M (NTSC) ,至少在H264标准里是这样,即SD的都一样。写成不同的tag一般只是便于识别源是PAL还是NTSC
  • BT.709
  • BT.2020的没细看,八成不一样就是。

Progressive soft-telecine DVD压制

我在前文提过这种DVD,说白了就是实际是23.976p,靠加tag来soft-telecine到29.97播放。也提到实际PC播放的时候其实还是按23.976放。现在知道这种视频一般在业内叫“film”,下面也这么叫。

压制这种视频其实不是很复杂,我们以every♥ing!专辑《Colorful Shining Dream First Date♥》的DVD为例。这个DVD里收录了一个MV和Live 1的特辑,长度很长(这个后面很关键)。这个视频是纯film,用dgindex做index,显示99.99% FILM。用megui的d2v+avs+x264组合压制的话,会以23.796恒定帧率压制,出来的视频也OK。但是有问题的,也是我纠结的部分,是章节文件。

megui压制film DVD的章节错位问题

为了便于叙述,先简介一下这视频的一些基本信息。首先,这个DVD分为三个title,title0是全部播放,19章节;title1是只播放MV,1章节;title 2是只播放演唱会,18章节。我主要是在压制title 2。使用的工具是megui的OneClick encoder,但是本质就是上面的工具链,多了一部自动提取chapter封装MKV而已。

对于压出来的视频,我们记录下:帧数,时长,帧间隔。

统计帧数有多种方法,比如用mediainfo

mediainfo --Output="Video;%FrameCount%" filename.mkv

另外,对于MKV格式,用mkvextract可以获取timecode表:

mkvextract.exe timecodes_v2 filename.mkv 0:timecodes.txt

这个相当实用,列出了每一帧的时间,用此可以推算出上面的所有需要的信息。数据的数量会比mediainfo显示的帧数多一个,相信是因为最后一个数字是最后一帧的结束时间。注意,不要用PotPlayer的OSD等方法来看帧数,那个对于VFR的视频完全不准,无法依赖(后叙)。据说用ffprobe也能抽取类似的信息,不过我试了下不是很好使没仔细研究。

这里,我这个视频的第一帧(帧0?)是从0ms开始,总帧数是115273。最后一帧的结束时间是4807844.708,也就是1:20:07.845(视频长度)。可以算下fps:

fps = 115273/[(4807844.708-0)/1000]=23.97602398

符合。我们也需要观察一下每帧的间隔。这里,每帧之间的差距都是41或者42ms。

但是问题出在chapter上,这里,这个视频的chapter是:

00:00:00.000 : en:Chapter 01
00:06:44.501 : en:Chapter 02
中略
01:29:10.006 : en:Chapter 17
01:37:49.923 : en:Chapter 18

可以看到,这最后几个chapter的开始时间根本就比视频长度还长了,肯定不对头。于是,回过头来看看DVD里的本来的chapter长啥样。手头能直接从IFO里提取chapter的工具只有megui自带的chapter creator和chapter grabber两个。megui提取的结果如下:

CHAPTER01=00:00:00.000
CHAPTER01NAME=Chapter 01
CHAPTER02=00:05:23.601
CHAPTER02NAME=Chapter 02
中略
CHAPTER17=01:11:20.009
CHAPTER17NAME=Chapter 17
CHAPTER18=01:18:15.943
CHAPTER18NAME=Chapter 18

看上去靠谱多了。这里要注意到megui这块显示“29.97”,我选成23.976,就会转换成上面那个错误的时间戳。看来,megui虽然识别出了视频是film,但是对chapter没有做正确的处理,多进行了一次不必要的29.97/23.976转换

Chapter grabber提取出来的时间也是和megui的chapter creator一致的。但是chapter grabber似乎有点弱鸡:无法正确读取VIDEO_TS.IFO只能选VTS_01_0.IFO,而且只能打开title0。

那么,我们直接提取出这个时间戳试试。封入MKV,就会发现……时间还是不对。这次不是滞后,而是提前,但是提前的不多。

DVD回放FPS的1000/1001问题

百思不得其解之下,我直接打开DVD播放,确认了下里面的章节时间确实是最后一个为01:18:15.943没错——但是时间点在这里就是对的。仔细定睛一看:怎么总时长是01:20:03?!

和我们压制出来的视频的1:20:07.845长度对比下,相信眼尖的可以发现——两者的差距正好是24和23.976。也就是说,这种FILM的DVD,虽然vob的元数据写的清清楚楚23.976,但是在按DVD播放的时候,却是按照24fps来播放的。我试了Pot/MPV/MPC-HC/BE,全都一样。同理,如果播放title0(整个DVD),会显示1:25:21,压片出来则是1:25:26,错了5秒。我还尝试了用dgindex提取音轨,长度确实是01:25:26。

对NTSC稍微有点了解的应该知道这个1.001倍差是怎么来的,这里不赘述。但是应该和我们遇到的现象无关——既然元数据是23.976,为什么要自作多情按24放呢?我在网上搜了半天,确实有搜到一个人提到这个问题:他遇到的是标准的60fps/59.94fps(或30/29.97)的情况下,直接回放DVD和megui压制出时间不同外加chapter偏移。可见这个问题是普遍的,和film其实没关系。更重要的是,他是用物理的Sony DVD player播放出60fps的,所以可见至少我们这些软件是真实模拟了DVD碟机。

虽然知道了问题的普遍性,但是依然不清楚为什么。不过这个差距实在是太小,所以在片子短的时候根本就很难注意到。另外,似乎直接播放VOB文件也会有这样的问题,但是时间太短看不真切。

顺便一提,获取真实帧率除了上面说的timecode大法,可以利用PotPlayer开启转换滤镜后的OSD

QQ图片20180602012354.png

(不开转换滤镜没括号那个数字,看不出来。)当然有波动,所以这种方法对于区分24和23.976还是无能为力了,主要用来看是24还是30。这里可以看到,视频的元数据还是29.97,最后的输出则都垂直同步到60fps左右了。

既然知道了原因,接下来我们的处理方式就很简单了:将DVD里的chapter直接抽出来(规避上述Megui的不必要的29.97/23.976转换BUG),然后手动做一次24/23.976转换(变慢)。得到的结果chapter文件:

CHAPTER01=00:00:00.000
CHAPTER01NAME=Chapter 01
CHAPTER02=00:05:23.924
CHAPTER02NAME=Chapter 02
CHAPTER03=00:09:11.552
中略
CHAPTER17=01:11:24.293
CHAPTER17NAME=Chapter 17
CHAPTER18=01:18:20.643
CHAPTER18NAME=Chapter 18

合成到之前的MKV里(记得删除老的chapter),眼睛收货,基本完美。

其他软件对比

虽然算是搞定了,但是我还是好奇用其他软件进行转换会怎样,能自动处理好吗?

makeMKV

首先让我们来试试几个纯remux的选项。MakeMKV一直是我比较信赖的软件,而且对多title支持很好。我转了一份title02出来,帧数为115273,OK;最后一帧结束时间是4807836(=1:20:07.836)倒是稍有出入,不过换算下来fps是23.9760674依然OK。

但是MakeMKV出来的视频有个问题,就是帧间隔不一致。和之前megui压制出来的不同,其帧间隔表现为33/50/34/50……的循环序列。虽然平均值还是23.976fps,但是如果真的这样播放,岂不是会很怪?可惜,肉眼是看不出有什么区别,还是得稍后求救doom9大神。

补记:Doom9没大神救我,不过MKVToolnix的作者称此为正常现象(但是没回答我是否会影响播放的问题:()。

Chapter方面,则是

CHAPTER01=00:00:00.000
CHAPTER01NAME=Chapter 01
CHAPTER02=00:05:23.923
CHAPTER02NAME=Chapter 02
中略
CHAPTER17=01:11:24.280
CHAPTER17NAME=Chapter 17
CHAPTER18=01:18:20.629
CHAPTER18NAME=Chapter 18

虽然和我之前24/23.976转换之后的基本一致,也是准确的。但是还是有个趋势我不是很喜欢:从chapter1只错1ms到最后一个chapter错了13ms为止,两者的差距正好是个单调增,这给人的感觉是其中一个有在转换的时候浮点精度不够导致的(比如用了23.976而不是24000/1001)。还好,1个半小时的视频都只有这点差距,即使是强迫症的我也能接受。

MakeMKV还有一点,就是视频的元数据是保留了那些tag(variable即VFR后来讲):

Frame rate mode : Variable
Frame rate : 23.976 FPS
Scan type : Progressive
Scan order : 2:3 Pulldown

所以还会被播放器识别为29.97(不影响播放)。

mkvtoolnix

另外一个remux的选项就是mkvtoolnix。由于mkvtoolnix只能傻傻地拖vob进去(倒是如果你拖VTS_01_1.VOB会自动识别后面的是append,但是注意别拖VTS_01_0.VOB进去,0是菜单那一帧),所以我们只能比较title0(全部播放)。具体就不赘述了,出来的帧数122905、最后一帧5126154(1:25:26.154)、fps=23.97606471和MakeMKV封title0完全一致。另外帧间隔不一致的问题也是一样,虽然两者的timecode并不是100%一致(大概每1秒钟就会有前后两帧各错1ms,囧):

001

不过我比较了下两者的元数据…

Writing library : libebml v1.3.6 + libmatroska v1.4.9
Writing library : libmakemkv v1.12.2 (1.3.5/1.4.7) win(x64-release)

……喂你这“libmakemkv”括号里的版本号很可疑啊,其实你就是用的完全一样的libebml和libmatroska来制作MKV的吧啊喂。说不定把两者版本更新为一致连上述的不一致都不存在了。

哦还有就是mkvtoolnix这么搞是没有chapter的,也不支持IFO中提取。我还顺便看了下remux出来的PCM的音轨的timecodes,是精确的30fps。

HandBrake

试完这个我们再来试试HandBrake(下称:HB)。HB也是个free(的“一键压片”工具,之前算是用过一次。虽然压制功能弱一些,但是对DVD的处理应该还是有其独到之处。

如果要和我们之前的结果进行比较,有个地方要稍微注意下,就是FPS的设定。默认的选项是peak=30fps的VFR(可变帧率),所以压出来的片子有可能会有部分非23.976的部分。最好改成CFR=same as source的方式。这里,我两种都试了,不过变量没控制好,CFR使用的编码器是x265 slow crf 18,VFR用的是x264 slow crf 18,不过根据另外一组实验,encoder的不同对结果没影响。

结果方面,两者的characteristics分别如下:

获取方法 参数 CFR VFR
Video timecodes 开始ms 0 21
 (from mkvextract) 结束ms 4808053.708 4808085.708
Diff. 4808053.708 4808064.708
Frame Count 115278 115273
折算FPS 23.97602169 23.97492692
mediainfo Video dur. 4808058 4808058
Audio dur. 4808054 4808077
General dur. 4808054 4808077
Frame Count 115278 115278

这张表里主要有以下几个奇怪之处。

  1. VFR那个视频,用mediainfo获取到的frame count和数time codes的结果在不一样,差了5帧。个人认为timecodes这个数据是准的,而mediainfo的结果是建立在CFR的假设下得出的。
  2. 其实,这个“VFR”版只有第一帧是非23.796——帧0的时间是21ms,而帧1的时间是282ms,间隔了261ms。按照23.976p的正常40-41ms间隔计算下,正好差不多可以补上那5帧的差别(这1帧顶别人6帧)。当然,由于VFR的存在,折算fps和23.976稍微有点偏差,这是正常现象。
  3. 可以看到,Mediainfo汇报的各种duration和timecodes报告的有细微差别。首先我不懂这个“duration”到底是简单的最后的结束时间,还是还要去除掉开始时间。但是从VFR那个可以看到,不管去不去掉21ms都对不上。即使是CFR那边也一样,反而和audio的能对上…相比之下,megui压制版用Mediainfo汇报出来的数据就完全一样。
  4. 可以看到,VFR版的Video是从21ms开始,同时,其audio部分则有个-21ms(相对video)的delay tag,所以audio其实是从0ms开始。个人觉得这视频不从0ms开始正是为了和音频同步而已。

另外,如果和上面其他几款软件的数据对比,会发现反而是VFR的和之前的frame count相同(115273),CFR的不同。对比时间戳的话,HB的CFR的时间戳几乎和megui的结果完全重叠,只是在最后比megui版多出来5帧(约200ms)。看了下HB的log,有这么一段(这是CFR的):

[06:16:51] reader: done. 1 scr changes
[06:16:53] work: average encoding speed for job is 15.803467 fps
[06:16:53] vfr: 115278 frames output, 0 dropped and 5 duped for CFR/PFR
[06:16:53] vfr: lost time: 0 (0 frames)
[06:16:53] vfr: gained time: 0 (0 frames) (0 not accounted for)
[06:16:53] mpeg2video-decoder done: 115273 frames, 0 decoder errors
[06:16:53] sync: got 115273 frames, 115157 expected
[06:16:53] sync: framerate min 23.981 fps, max 29.970 fps, avg 23.976 fps

基本来说,源MPEG2那边确实只有115273帧,但是是VFR。所以,为了VFR->CFR,复制了5帧出来共计115278。至于megui那边则似乎直接没有这样操作,强行把当做CFR逐帧转了。

同理,VFR则不需要对帧的数量进行调整,直接保证帧间隔和原来的源一致就行了。这是VFR的:

[08:52:09] reader: done. 1 scr changes
[08:52:10] work: average encoding speed for job is 62.888802 fps
[08:52:10] vfr: 115273 frames output, 0 dropped and 0 duped for CFR/PFR
[08:52:10] vfr: lost time: 0 (0 frames)
[08:52:10] vfr: gained time: 0 (0 frames) (0 not accounted for)
[08:52:10] mpeg2video-decoder done: 115273 frames, 0 decoder errors
[08:52:10] sync: got 115273 frames, 115157 expected
[08:52:10] sync: framerate min 23.981 fps, max 29.970 fps, avg 23.976 fps

哦差点忘了说,无论是CFR还是VFR,帧间隔也是正常的40/41,而不是直接remux那种奇怪的不等距的间距。

让我们来看看chapter时间,毕竟最开始我们就是在研究这个。

CFR那边是

00:00:00.250 : :Chapter 1
00:05:24.157 : :Chapter 2
中略
01:11:24.530 : :Chapter 17
01:18:20.863 : :Chapter 18

VFR那边是

00:00:00.261 : :Chapter 1
00:05:24.127 : :Chapter 2
中略
01:11:24.500 : :Chapter 17
01:18:20.832 : :Chapter 18

虽然稍有区别,但是实际时间点都是精准的。准确地说,CFR版本和megui、makeMKV提取等最后一章节的开始点是完全一致的一帧;VFR版要提前一帧。但是我感觉VFR版的更对,因为VFR正好是在转场(片尾credit的)开始的第一帧,别的都是第二帧。嘛,这种小细节并没有别人在意……

哦我还看了下HB的log,他对chapter是这么操作的

[04:15:22] scan: chap 1 c=0->0, b=188473->379436 (190964), 323600 ms
[04:15:22] scan: chap 2 c=1->1, b=379437->514336 (134900), 227400 ms
[04:15:22] scan: chap 3 c=2->2, b=514337->657180 (142844), 244000 ms
……

这是读取原始的。

[04:15:23] sync: first pts audio 0xa0bd is 0
[04:15:23] sync: first pts video is 19770
[04:15:23] sync: "Chapter 1" (1) at frame 1 time 19770
[04:24:26] sync: "Chapter 2" (2) at frame 7767 time 29171392
[04:31:23] sync: "Chapter 3" (3) at frame 13225 time 49659360
……

这是写入的时候。虽然看不懂但是有个专门的category叫sync就感觉很专业!

这里感慨一句,所有的这种细枝末节,都是软件(不限于HB本身,还有各种lib等)作者一点点抠出来的啊。想写一个这种项目,尤其是比较底层、又是video这种历史包袱估计比山还高的,真是不容易。

几种压制方式的画质比较

既然片子都压出来了,我们顺便比较一下几种方式出来的画质几何,也给以后做个参考。对于这种我还会保留原盘的,其实只要画质不太差就行,所以我都是无脑slow crf 18。参与比较的有megui压出来的x264 10bit(hi10p)、x265以及handBrake压出来的x264和x265。

比较的结果比较出人意料,差别还挺大的。1:1播放(LAV+MadVR渲染,不过既然大家都一样应该算公平),细节最好的明显是x264 hi10p:

001

比较黄框部分,尤其是在HB的x265里,衣服的兜儿的线直接就没了……明明哪边都没有开denoise。当然你可以说x265的压缩噪声少,但是这种少法我不要啊!

这里有个奇怪之处是同样的参数为啥megui和HB的x265的区别肉眼可见。我比较了下log:

002

除了发现HB的版本老得快有代差以外(嗯,我承认我才发现我的HB是去年4月的旧版…)别的没啥特殊之处。不过最后出来的码率低了快10%,有点画质区别也是正常吧。

x264(hb)和megui的x264 hi10p的区别倒不算很大。体积方面(只计算视频),

HB-x264: 1.23 GB
HB-x265: 844 MB
megui-x264-10bit: 1.18 GB
megui-x265: 952 MB

我于是在想,同样的crf参数,在x265和x264到底能否代表同样质量?但是无论如何,按理说HEVC的目的不是号称同样质量减少一半体积嘛,这点程度的体积差给我打败x264啊!

Film的反交错问题

我们已经知道了film是p,所以不用反交错。用megui压制的时候,那个自动反交错功能会根据DGIndex的汇报判断出是99.99% film所以禁用反交错。

用HB则稍微有点问题。默认的情况下,开启的是decomb滤镜。但是他这个检测感觉并不是很强壮,这是我压title2 chapter1的结果:

[06:56:15] comb detect: heavy 490 | light 1752 | uncombed 5523 | total 7765
[06:56:15] decomb: deinterlaced 490 | blended 1752 | unfiltered 5523 | total 7765

可以看到,其检测结果是有约2000多帧有heavy或light的comb,所以进行了deinterlace和blend。这显然不是我们想要的,因为理论上会降低画质。换成yadif的话没有对应的log,所以不知道是如何处理的,但是估计也差不多。所以,这里我们最好手动关闭deinterlace才行。

(不过,我稍微对比了下画质,虽然有不同但是也很难讲到底有变差多少,囧)

外一则:播放多title DVD的几个现象

在本文撰写过程中(好吧其实是半个月前),我发现各大播放器对于多title的DVD支持,尤其是进度条,都有各种谜之BUG。这里以Pot和MPC举例,其他播放器根据我的实验,也多少都有问题。播放的片还是上面那个。

问题1:直接播放VTS_01_0.IFO的问题

实话说我也没懂VIDEO_TS.IFO和VTS_01_0.IFO这俩有啥区别,总之如果直接播放VIDEO_TS.IFO,一切正常,可以在菜单里选不同的titile等。但是如果直接播放VTS_01_0.IFO,虽然内容看上去是title0(所有内容,从MV开始),但Pot里视频长度会变成奇怪的1:31:10(变长了),MPC-HC那边会变成1:20:08(也就是莫名是title2的23.976速度下的长度——不知道是不是巧合)。具体为什么我没细究,我记得之前对比了下播放的帧速也真的不太一样。

另外一个现象是拖进度条和播放到某个时间点的结果不一样。比如,在MPC里,如果你正常播放,到4:10还依然是MV(MV的长度是05:18左右);但是如果你手动拖进度条到4:10,会发现已经在Live的部分了……Pot那边虽然没这诡异的问题,但是chapter的时间点也完全不对。

问题2:直接播放VOB

这个仅限于直接播放VOB1,估计也是因为多title导致的。VOB1在MPC、mediainfo等显示duration只有09:29,这个根据体积计算就知道明显不对,Pot里显示14:28稍微靠谱些,但是实际上单独VOB1用mkvtoolnix封装下就知道真实长度应该是14:47左右。然后MPC那边又有“拖进度条和播放到某个时间点的结果不一样”的问题——again,还是多title复用视频片段的锅。所以,看DVD的时候,尤其是比较长的有多章节、多title的情况下,还是老老实实用VIDEO_TS.IFO启动,或者makeMKV封装下再看。

Hybrid DVD压制

上面说了这么多还只是纯film的视频。还有一种更恶心的:混合film和普通29.97fps interlaced视频的。这手头也有个例子:TrySail的一专《Sail Canvas》初回的DVD。不过,这次只有一个title0,两个chapter。其中chapter1是MV,是film;chapter2是花絮,是普通的29.97 interlaced,最后几秒Aniplex的logo又变回film。

Remux

这种视频,用MakeMKV remux是会自动使用VFR的方法来处理,播放时没有问题。Interlacing的问题至少我这边LAV可以实时监测并tag,给下流处理,其他解码器不清楚。

※刚发现其实有点小问题:如果你按照顺序播放,前面(根据MadVR的OSD)会标记interlacing off,后面自动变成on,正常;如果直接拖动到后半部分,也会切换成on,正常;但是你一旦你on了之后,再拖回part1,就不会off了囧,不知道是纯OSD显示BUG,还是会真的影响播放(比如对progressive的内容强行加了deinterlacing),姑且去Doom9问了。

需要注意,上面提到的各种“问题”都还在,比如MakeMKV压出来在23.976p的部分奇怪的不等间距time code;比如chapter要加1‰偏移(这次的chapter 2的开始时间,在DVD是4:30.000,用MakeMKV封装之后就会自动变成4:300.270)。

Encode

压制的话,用HandBrake处理起来是最得心应手的——可以直接压制成VFR的视频。这个也是我比较推荐的做法。chapter的处理也全自动。HB也可以选成CFR输出,我试了下如果选“same as source”会选择23.976(毕竟上来先是这个),后面的会被转换一次帧率。但是30转24的效果比较差,可以感觉到卡卡的,不推荐——即使真的想转成CFR,也用29.97吧。


补记:HB压制VFR的MKV的时候,metatag会不对(会显示CFR+一个错误的帧率,一般是原始视频的起始帧率)。虽然不影响播放,但是有强迫症的可以选择用mp4输出;然后用MKVtoolnix封装回MKV。即使你已经用MKV输出了,你也可以用ffmpeg先remux成MP4,再封装回MKV。注意几点:

  • 直接重新remux MKV到MKV不行。
  • MP4->MKV要用MKVtoolnix,不能用ffmpeg。Ffmpeg也会有tag写成CFR的问题(我怀疑HB用的就是ffmpeg的lib)。
  • 这样操作一番还能解决一个问题,就是HB压出来的MKV的metatag还没有每个stream的bit rate的问题。

补记的补记:去HandBrake问了,原来其实不是metatag不对。其实,MKV的规范根本就没有“帧率”这个header——或者说MKV这个容器根本就没有帧率这个概念,因为具体的帧时间控制完全是靠timecodes来的。我们能Mediainfo里看到的tag纯粹是MI自己猜测的,所以没有参考性。至于为啥MP4 remux回MKV就有,那是因为原video stream本身的这类信息可以被继承下来并被MI读取到。同理,HB压出来的MKV没有bitrate也是同理——规范根本没有这个header。不过,MKVToolnix默认会自动计算bitrate(以及一些其他)并存到“tag”(一种可以往MKV添加任意自定义元数据的方法)里,所以MKVToolNix封出来的MKV一般还是能显示bitrate的。但是HB并不适用MKVToolnix来封装的,所以就欠奉了。


至于deinterlacing,由于HB这边选择不多,就用默认的decomb吧,其实我这DVD我看了下,后面的又是假interlaced(即两场同时曝光,实质progressive),所以什么都不加直接让编码器weave都没问题,也没法比较了。

megui那边就比较麻烦,据说用了AVS脚本压,就只能CFR;所以如果想压VFR,要么直接送x264,要么用AVS压完后自行搞出timecodes封装。我不是很想折腾,就试了下直接压CFR。开启auto deinterlacing的前提下,出来的结果还是没大问题的,CFR 29.97fps,23.976fps的部分会被比较正确地转换成29.97。如果不开deinterlacing,23.976p的部分会被直接telecine (2:3 pulldown) 成29.97,经典的5烂2效果我就不用说了(顺便一提用DGIndex预览记得去掉“Honor pull down flags”否则也是一样)。不过别忘了章节的时间问题,还得手动操作一下。

我也试了下用megui去直接encode MakeMKV remux的mkv,和直接用DVD压好像没啥区别,至少VFR的MKV当source看来是能处理。

哦还有一点,千万不要用megui OneClick encoder的“Don’t encode video”(remux)功能,完全狗屎,第一,他会按原始视频的平均FPS压片,出来个28.84 CFR的鬼东西,视频速度全乱了,音频也desync。其次,不知道为啥,这个remux的速度慢的出奇,甚至比一些preset下的encode还慢……

分段处理

其实还有个不错的方案是直接分割,然后两段分别用23.976 / 29.97 CFR。但是用megui按章节分割又是难死,所以还是用HB做这个吧,可以选chapter压制很便利。就是记得1点:由于第一部分和第二部分开始于同一个VOB里,所以元数据只有第一部分的,所以如果你压第二部分选CFR(same as source),会很尴尬地变成23.976fps。所以手动选一下29.97吧,或者直接上VFR,本质也会是29.97。其实推荐VFR,鬼知道手动选29.97会不会出现某些帧没对齐所以进行多余操作之类的,但是选了VFR之后元数据里的nominal FPS又会依然是23.976看着很不爽……

哦对,HB我升级了新版,发现也支持x264 hi10p了,很不错哦。

结语

写这文章的时间都能写出一篇论文了,光excel都做了7个表,用了几十G硬盘,现在什么也写不动了。总之我的结语就是DVD必须死,NTSC必须死。

最近遇到的几个视频相关的问题

没什么条理的一篇,主要记录下昨/前天遇到的几个小事,以后自己查询用。这种是不是记录到私人的OneNote里好点……

视频播放反交错处理

其实一直很好奇“反交错”处理到底在哪一步。因为据我所知,LAV、PotPlayer和MadVR都有处理反交错的能力。我用一个古老的自抓DVDISO:河合その子 – その子の夏(2004年发行)来进行测试,因为我发现近年的DVD大多都是progressive的了。

具体测试过程不赘述了,虽然费了蛮多功夫。总体而言,就是三者都能处理,但是有一个容易有误解的地方是LAV的设置里,有两个不同的设置:

QQ图片20180422185941

其中左上角那个,其实是决定了如何对视频流进行逐行/隔行标记,所以请务必选成“Auto”或者Agressive(后者是完全按照视频文件的metatag来,前者则是还有一定的检测成分)。如果选成disable,后面所有步骤(Lav自带的反交错、Pot转换滤镜、MadVR等)都会把视频流完全当成逐行来处理(OSD里也能看出),不会再尝试进行反交错。

至于右下角那个则是真正的反交错处理,可以看到我这里是设置成禁用的(软硬都)。所以LAV这里并不会进行真正的反交错处理,只是标记它是隔行视频。

那么接下来,在Pot(如果开启了转换滤镜)和MadVR里都可以反交错,这个没啥多说的。根据我个人的播放的workflow(开启转换滤镜,原因上文说了)的话,会被Pot处理,所以Mad那个就用不到了(虽然也没关就是,留着自动)。

在测试过程中,我还发现一个奇怪的现象,手头有几个TrySail的HDTV源的TS文件(均录制自索尼家的M-ON!),虽然标记也是隔行,但是用肉眼完全看不出任何一帧有交错条纹。又看了硬盘里有的其他一些M-ON!录制的,似乎这种现象还挺普遍(但是也有有的,比如20170119043000_「リスアニ!LIVE 2017」出演アーティスト特集▼LiSA、三森すずこ、南條愛乃 他_エムオン!HD).ts这个)。搞不懂是源就是这样,还是录制视频的人其实已经做了处理,却没有修改元数据。

试用StaxRip

StaxRip是S1看到有人推荐的一个视频压制工具集。其思路和megui差不多,而且附带的组件意外地全。其操作思路比较接近megui里的OneClickEncoder(如果用megui推荐一般就用这个,megui的主UI很反直觉),而且一些地方比如resize设定、DAR/SAR/PAR展示比megui的好用多了(megui的avs creator里的resize用起来也很别扭)。

[这里再吐槽一下,SAR一般是指Storage aspect ratio……也就是实际存储的像素数量的width/height比。但是在x264的argument里却是“Sample Aspect Ratio”——相当于别人的PAR(像素宽高比)!]

这工具的完成度很高,在一些细节上蛮用心(比如AVS编辑器、log等)。但是BUG也挺多的,UI上短暂试用了一下就发现不少bug(例如:如果选了一个没安装的组件无法取消安装对话框,无限循环;DAR的显示经常错误),更严重的是有个audio copy/mux时不会apply的delay的恶性bug(大概搜了下,15年doom9似乎都有人提过?)。

而且作者似乎是孤军奋战,更新频率感觉不是很乐观,不知道未来会如何。

Remux到MKV的音频Delay“问题”

如上所述,音频delay这玩意是在encode甚至是remux视频时经常会搞糟的一个头疼问题,之前在压制某演唱会的文章里也提过megui在拼接视频的时候也做得很差,倒是fffmpeg相当靠谱。今天又发现一个奇怪的:我手头这个TS文件的audio的metatag有

Delay relative to video : -368 ms

但是,如果直接用mkvmerge或者ffmpeg remux成MKV,就会变成

Delay relative to video : -377 ms

由于这俩差别不到100ms,我肉耳无法听出是否有区别,所以不清楚是真的有偏差、还是因为封装的时候有别的因素考虑,才变成这个数值的。姑且问了下mkv的作者,过几天看看有没有回复。

如果用ffmpeg直接remux成MP4,则并不是用metatag的方式实现的(metatag里并没有相关的),所以也无从得知结果如何。至少耳朵收货是没有明显的音画不同步的。

x264编码速度问题

在测试StaxRip的时候,发现其编码速度比megui快得多(几乎快1倍)。经过控制变量,发现主要影响的是:StaxRip默认用的是MPEG2DecPlus64.dll插件来做MPEG2Source,而megui那边则是DGDecode.dll。顺便一提,前者是x64的,需要用x64的Avisynth来加载;后者是x86所以也得用对应的x86版Avisynth,但是因为后面要调用x64的x264,所以得用avs4x26x辅助一下,类似这样:

"D:\Program Files\MeGUI\tools\x264\avs4x26x.exe" --x26x-binary "D:\Program Files\MeGUI\tools\x264\x264.exe" --preset medium --crf 17 --output "E:\aaaa\output2.264" "E:\aaaa\bbb.avs"

另外,我发现StaxRip带的旧版(2017年)x264的速度也比megui带的最新版快那么10%。

虽然不清楚为什么区区Source滤镜的不同会影响这么大,但是我发现当我使用正常的压制preset(medium或者slow,之前为了测试都用的ultrafast)时,两者的区别就小多了。这也可以理解:当压制的复杂度上升之后,自然主要的时间都花在这边了,avs那边多浪费一点时间的区别也就不明显。

顺便提一下反交错滤镜——因为AVS能用的至少十几二十几种,我也搞不清楚哪个算是业界主流,一般都用megui自动分析出来的囧。开了这个滤镜之后,对压制速度影响也是蛮大的。

碎碎念

视频压制界的工具、技术的混乱程度之高简直叹为观止。如果只是随便玩玩,倒是用好ffmpeg就基本能解决90%的问题;但是正是那剩下的10%要花费大量精力才能掌握。同样的Task,有4、5种工具是常事,而且还是经常是互有优缺,哪个都不能丢。与之相对的,却是开发者的缺乏:大多数工具多是个人开发(尤其是早期,可以说整个生态圈都是个位数个geek一手打造出来的),无论是更新还是维护都很难得到保证。这导致了两个截然相反的现象:一是“技术栈”(笑)得要经常更新,毕竟新来的高手们都是喜欢重新造轮子的;二是经常有那种作者早就不知所踪、却又无法丢掉历史遗留产物,mod了又mod还得咬着牙用。

另外,documentation的匮乏也是个很严重的问题,经常有许多问题(比如某些软件的奇怪quirk)要翻遍doom9才能在漫漫几千楼里找到答案。这也是我坚持写blog记录自己遇到的各种技术问题的原因,哪怕能给1、2个“后人”指个路也是好的。

压制ゆうゆ演唱会视频小记

文章里的事情大概是几个月前的了其实,不过为了叙述方便还是按照时序讲。

之前从YouTube下载了这套非常罕见的ゆうゆ(岩井由紀子)的唯一演唱会(至少是唯一有视频记录的)《ボクらは元気なゆうゆ印》的全集。虽然画质不怎么地,但是能看到已经是万幸了。

将整套视频共7个part用youtube-dl下载完毕后,有几个问题导致欣赏起来不是很方便:

  1. 分段
  2. 视频比例不对,外加有没切割干净的黑边。考虑到该演唱会只发布在VHS上,应该是录屏的结果(外加ntsc各种奇怪的劳什子)。

于是自然就想到把这7段自行压制一下,整合成一个视频。

最先想到的自然是MKV无损拼接;但是随便试了下就放弃了:我发现这几个视频居然连分辨率都不一样——有的是360p,有的是480p——一开始是怀疑yotube-dl下载的问题,但是double check了之后发现Y2B上也是如此。也因此,导致在YouTube给出的编码格式都不一样:有的音频是Opus,有的是Vorbis。

切边

第二个想到的是megui。megui里切黑边很方便,有可视化,可以切的非常干净。最后生成对应的AVS脚本。至于比例问题,考虑到原始视频自然是4:3的,所以无脑把切剩的拉到640×480,目测比例没大问题:

crop.png
左:切割前 右:切割后

使用的参数是:

crop(2, 28, -14, -32)
LanczosResize(640,480) # Lanczos (Sharp)

但是切完之后,发现后续步骤没法进行了:megui本身并没有一个特别好用的视频合并工具。而且和大多数视频一样,这些视频有个问题:音频和视频的长度并不一样。就拿第一段为例,视频的长度为00:07:54.507000000,音频的则是00:07:55.021000000,足足错了快1秒!这在播放单独每个段落的时候自然没问题(超出的音频直接就掐掉了),但是如果贸然将每段单独转换并一一合并的话,会出现(第二段起)音频不断滞后或者提前的音画不同步问题。我在megui里找了半天,似乎没有办法简单地克服这个问题。我总不能自己找个音频编辑软件把每个音频都手动切割一下吧?另外,考虑到megui处理视频的时候,是把音频和视频分开处理的,这也不甚方便:每次压完之后都得手动合并一下音频视频流(我知道可以用脚本自动化,但是实在是费不起那个功夫)。

于是我在网上漫无目的地搜索,搜到了avidemux这个从名字到UI都略蠢的软件:

003.png

当初选这个软件是因为这个软件直接就有合并文件的功能(把N个一起拖进来),但是试了下就发现,依然有上面所述的音画不同步的问题——而且不同分辨率也是合成不了。

但是你别说,这玩意虽然bug奇多,但是功能还挺全。其最方便的是各种filter,和XnView之于图片一样,可以添加一堆依次适配。这对于我那几个360p的分段有奇效,因为我可以直接添加三个filter:第一个先拉大到640×480,第二个用之前提过的crop,第三个再拉到640×480。这样做(而不是直接在360p上crop再拉伸)的好处是可以保证能和480p那几个完全对齐。虽然我猜这些filter的原理也都是avs了,但是至少这界面人性化很多。所以,我决定就用这个软件替代megui来进行前面的crop+resize的工作。

对于输出的视频和音频编码,我视频选了ultra fast+-crf 12的超高质量(外加节省时间),音频选了copy,来最大可能地减少二次压缩的损失,因为后面反正还要合并。还是要吐槽下,这个软件确实很笨,没法导入导出设置,那些filter每次都要重选。还好只有7个,否则我怕不是要疯掉。

合并

于是经过烦人的点点点,我终于有了7个MKV文件,每个都是640×480分辨率,有视频流和音频流,无黑边比例对,就差合并了。这里要动终极武器ffmpeg了。ffmpeg有一篇很不错的合并视频的教程,不过前几章都是教你如何无损(不重编码)合并同编码视频文件的,可以跳过。我们这里要用的是“Concat filter”那个。这里是官方的范例:

ffmpeg -i input1.mp4 -i input2.webm \
-filter_complex "[0:v:0] [0:a:0] [1:v:0] [1:a:0] concat=n=2:v=1:a=1 [v] [a]" \
-map "[v]" -map "[a]" <encoding options> output.mkv

可以看到这玩意语法也相当啰嗦,不过还是那句话只有七个,所以我们就手写吧…结果如下:

ffmpeg -i 001_edit.mkv -i 002_edit.mkv -i 003_edit.mkv -i 004_edit.mkv -i 005_edit.mkv -i 006_edit.mkv -i 007_edit.mkv -filter_complex "[0:v:0] [0:a:0] [1:v:0] [1:a:0] [2:v:0] [2:a:0] [3:v:0] [3:a:0] [4:v:0] [4:a:0] [5:v:0] [5:a:0] [6:v:0] [6:a:0] concat=n=7:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" -c:v libx264 -preset slower -crf 18 -profile:v high -level 5.0 -c:a libvorbis -qscale:a 6 result_final.mp4

这里,AVC我用了slower的preset,high@5.0的profile外加-crf 18,音频用了Vorbis可变编码率-qscale:a 6

压制耗时不长(毕竟只是一个标清的视频),大概1.6x的速度。检查结果,完美无瑕(当然,每段衔接处会顿卡,这个无法避免),前面说的音频滞后/不同步的问题完全没有,果然ffmpeg还是专业啊。

章节

对于演唱会类的视频,没有章节怎么能忍。之前我在整理CoCo的演唱会视频时已经研究过如何制作章节,虽然MKVToolNix似乎有逐个添加章节的功能,但是还是手动写XML来得方便。

制作起来倒也很简单了,就是繁琐些:自己看视频找节点,然后用g(PotPlayer快捷键)查看复制时间戳,然后填写到XML里就是。章节名称网上找了好几个都不全,我用的是这个(手动添加了个“yuuyu即兴创作”(Special: ゆうゆアドリブソング)的段落)。

结果:


<?xml version="1.0"?>
<Chapters>
<EditionEntry>
<ChapterAtom>
<ChapterTimeStart>00:0:00.000000000</ChapterTimeStart>
<ChapterDisplay>
<ChapterString>Opening</ChapterString>
<ChapterLanguage>jpn</ChapterLanguage>
</ChapterDisplay>
</ChapterAtom>
<ChapterAtom>
<ChapterTimeStart>00:00:31.266</ChapterTimeStart>
<ChapterDisplay>
<ChapterString>アッというMAにMEっ!</ChapterString>
<ChapterLanguage>jpn</ChapterLanguage>
</ChapterDisplay>
</ChapterAtom>
<ChapterAtom>
<ChapterTimeStart>00:03:46.312</ChapterTimeStart>
<ChapterDisplay>
<ChapterString>25セントの満月</ChapterString>
<ChapterLanguage>jpn</ChapterLanguage>
</ChapterDisplay>
</ChapterAtom>
<ChapterAtom>
<ChapterTimeStart>00:07:55.995</ChapterTimeStart>
<ChapterDisplay>
<ChapterString>アラジンの魔法ビン</ChapterString>
<ChapterLanguage>jpn</ChapterLanguage>
</ChapterDisplay>
</ChapterAtom>
<ChapterAtom>
<ChapterTimeStart>00:11:28.369</ChapterTimeStart>
<ChapterDisplay>
<ChapterString>メトロポリス・ハネムーン</ChapterString>
<ChapterLanguage>jpn</ChapterLanguage>
</ChapterDisplay>
</ChapterAtom>
<ChapterAtom>
<ChapterTimeStart>00:15:07.825</ChapterTimeStart>
<ChapterDisplay>
<ChapterString>へへへのへ</ChapterString>
<ChapterLanguage>jpn</ChapterLanguage>
</ChapterDisplay>
</ChapterAtom>
<ChapterAtom>
<ChapterTimeStart>00:19:04.265</ChapterTimeStart>
<ChapterDisplay>
<ChapterString>はてなが咲いた</ChapterString>
<ChapterLanguage>jpn</ChapterLanguage>
</ChapterDisplay>
</ChapterAtom>
<ChapterAtom>
<ChapterTimeStart>00:23:25.139</ChapterTimeStart>
<ChapterDisplay>
<ChapterString>Special: ゆうゆアドリブソング</ChapterString>
<ChapterLanguage>jpn</ChapterLanguage>
</ChapterDisplay>
</ChapterAtom>
<ChapterAtom>
<ChapterTimeStart>00:26:25.334</ChapterTimeStart>
<ChapterDisplay>
<ChapterString>ついて行けない</ChapterString>
<ChapterLanguage>jpn</ChapterLanguage>
</ChapterDisplay>
</ChapterAtom>
<ChapterAtom>
<ChapterTimeStart>00:15:07.825</ChapterTimeStart>
<ChapterDisplay>
<ChapterString>へへへのへ</ChapterString>
<ChapterLanguage>jpn</ChapterLanguage>
</ChapterDisplay>
</ChapterAtom>
<ChapterAtom>
<ChapterTimeStart>00:19:04.265</ChapterTimeStart>
<ChapterDisplay>
<ChapterString>はてなが咲いた</ChapterString>
<ChapterLanguage>jpn</ChapterLanguage>
</ChapterDisplay>
</ChapterAtom>
<ChapterAtom>
<ChapterTimeStart>00:29:37.354</ChapterTimeStart>
<ChapterDisplay>
<ChapterString>爪を噛んでた</ChapterString>
<ChapterLanguage>jpn</ChapterLanguage>
</ChapterDisplay>
</ChapterAtom>
<ChapterAtom>
<ChapterTimeStart>00:33:51.745</ChapterTimeStart>
<ChapterDisplay>
<ChapterString>-3℃</ChapterString>
<ChapterLanguage>jpn</ChapterLanguage>
</ChapterDisplay>
</ChapterAtom>
<ChapterAtom>
<ChapterTimeStart>00:37:32.261</ChapterTimeStart>
<ChapterDisplay>
<ChapterString>Panic'n Roll</ChapterString>
<ChapterLanguage>jpn</ChapterLanguage>
</ChapterDisplay>
</ChapterAtom>
<ChapterAtom>
<ChapterTimeStart>00:44:23.560</ChapterTimeStart>
<ChapterDisplay>
<ChapterString>天使のボディーガード</ChapterString>
<ChapterLanguage>jpn</ChapterLanguage>
</ChapterDisplay>
</ChapterAtom>
<ChapterAtom>
<ChapterTimeStart>00:48:06.486</ChapterTimeStart>
<ChapterDisplay>
<ChapterString>マグネット・マジック (Encore)</ChapterString>
<ChapterLanguage>jpn</ChapterLanguage>
</ChapterDisplay>
</ChapterAtom>
</EditionEntry>
</Chapters>

view raw

chapter.xml

hosted with ❤ by GitHub

有了这个,用MKVToolNix合并进MKV里就是了。chapter的选项在Output里:

005

结果不用说,很完美。

关于视频本身

当我第一次看这个演唱会的时候,还是略显感伤的。作为小猫俱乐部里我的最爱,ゆうゆ的巅峰自然还是小猫俱乐部活跃的时期。当时在ゆうゆ小猫里是固定前排,要单曲有单曲,要组合更有人气爆棚的うしろゆびさされ組。和大多数偶像一样,在小猫俱乐部解散后,单飞的ゆうゆ人气一路下跌,最后在89年后直接停止了歌手活动专心做telent,但也就是在三四线游荡,最后撑到97年结婚彻底退出娱乐圈。不过比起许多80年代偶像现在徐娘半老还在辛苦地走穴赚钱,安心做家庭主妇大概也是一种幸福(ゆうゆ最后一次出现在公众眼界应该是02年的富士台FNS歌謡祭的小猫再聚首)。

这场ゆうゆ单飞后的首次(可能也是唯一)演唱会,虽然仅仅是小猫解散后不到一年的88年1月24日,却已经和组合时期的画风完全不同了,当然这大多是单飞以及年龄增长导致的路线选择问题,倒也没什么奇怪的。不过我个人对这个搞怪的路线不是很感冒,可能更怀念那个唱『夏休みは終わらない』那个元气小不点吧。不过这场收录了我最喜欢的一首,4单的c/w『爪を噛んでた』的现场版,光是这个就值回票价了。我单独压了一份发了Y2B:

分割方法:

ffmpeg -i 006_edit.mkv -ss 00:00:00 -t 00:04:13.940 -c:v libx264 -preset fast -crf 18 -c:a flac cut.mkv

缩略图自己P的,用了meiryo字体+投影。

另外值得一提的是本场演唱会的举办地点是中野サンプラザ,即著名的偶像圣地。后来比较有名的应该是早安系长期固定在此演出,不过我第一次知道还是从CoCo的演唱会里。

后记

成文之时随便搜了下,果然(为什么我要说果然)在我搞完这一切之后的几个月内就有人在Y2B直接放了一段的完整版……好吧唯一可以自我安慰的是他那个有水印不是么(笑)。

后人人时代的下载选择?《星际穿越》四版本简单比较

虽然我一直对盗版资源分享的未来的种种危言耸听不以为然,但不可否认地是人人的垮台对获取影视资源的便利程度依然造成了一些影响。不过目前来看,这种影响多半还是局限在老片上——向人人网站那么方便的检索网站确实除了人人的马甲zimuzu.tv之外没有特别好的替代品(而zimuzu.tv要中级会员才能看到链接);但是总体而言,下新的电影或者美剧基本是没太大影响。恰恰相反,由于群龙无首的效应,现在反而回到了当年各种版本纷飞的乱花渐欲迷人眼的情况。这也就是此博文的意义所在了。所以想来看关于压制水平的细致比较的,估计是来错地方了——本文主要是粗略地分析一下现在存在的几个版本的细节处理问题,为了自己以后选下载做个存档罢了。

姑且简单回顾一下人人。其实在大学期间,坐拥教育网的高带宽,外加人略中二,我是对这种内嵌字幕的电影资源不屑一顾的。当时看电影基本都是跑到随便哪个PT直接下1080p来看,再自行寻找合适的字幕。然而随着年纪增大和网络环境的变化,也逐渐厌倦了每次看电影下资源那复杂的步骤。人人影视压制的所谓“HR-HDTV”版本恰好能满足我的需求:适中的文件大小,能在清晰度和体积之间取得一个平衡;自带双语字幕,免去自行调教时间轴和对比翻译的辛苦,同时质量也算说得过去,而且退一万步说有英文字幕对着看即使有错也无伤大雅了;比较保守的压制方式使得放到移动设备观看异常地方便。最重要的一点是,人人的片子都是经过音量均衡的,完美地解决了电影大部分人声音量偏小的问题。固然效果不能和0day带的原始DTS音轨之类的比效果(或者可能破坏了原始的意图),但是对于用20块钱音响甚至平板那破喇叭的我来说,不用来回去调音量才是更重要的。

在人人被查封之后,他们贼心不死的开了N多的MJ站,基本上找新片依然没什么问题。然而从今年年初起,不知道是因为组员流失还是什么其他的原因,人人居然不再做HR-HDTV版本的电影了(美剧依然在做)。虽然现在依然有MP4版的,其他也都没什么区别(一般而言MP4码率要低一些,但是我并不咋关心),但是上文提到的“均衡音量”的设置却很遗憾没有在MP4版本中保留下来——这几乎是我选择人人压制版的最大的原因。

既然已经死了,那感叹也没有用。前一段正好想复习下《星际穿越》(毕竟第一次在电影院看原声版基本剧情大概只懂了一半囧),在各个现存的资源站搜刮一番,居然找到了四个版本。那么接下来就详细比较一下每个版本的不同。

1. 深影论坛版

下载地址:原声版中英双音轨版 (可能需要先注册账号)

深影基本是个和人人差不多的网站,除了没有门户用论坛发布以外。大概也得益于此,没有和人人一起嗝屁。而且有意思的是,它也和人人一样也是同时出MP4版和MKV版。介于人人的前车之鉴,外加深影的MP4版码率实在是低的过分(《星际穿越》长达2小时49分,MP4版居然只有1.37G),我就只下了MKV版的来看。介于我对中文音轨没啥需求,我只下了单音轨版。虽然非本文重点,但是视频的基本情况也贴一下:

文件名:星际穿越.IMAX.巨幕.Interstellar.2014.中英字幕.BDrip.720p.x264.深影论坛影视组.mkv
体积:3.58GB 封装:MKV 视频:H.264 1280×720 2584Kbps 音频:AC-3 448Kbps

字幕情况:有特效。由论坛帖可知,是“老生制作”。中文字幕实际就是国配的字幕,所以质量尚可,偶尔和英文直译差的比较远。这么来看其实就是负责了个压制。字幕的字体是这样的:

星际穿越.IMAX.巨幕.Interstellar.2014.中英字幕.BDrip.720p.x264.深影论坛影视组.mkv_003937.022

虽然和人人的蓝字不太一样,但是也是蛮舒服的。哦,差点忘了最重要的事情——音量。没错,音量是经过调整的,平时看懂的音量也可以听得很清楚,这点很赞。

2. 高清MP4吧版

下载地址:720P版1080P版

这个网站其实我是前一段才听说。看上去弄得还挺像回事的。和人人以及深影一样,制作内嵌字幕的电影、美剧之类的。独特之处在于他还做1080P的版本,至于封装全是MP4。我下的是720P版。如果自行搜索注意下别下成V1版,有个修正版。

文件名:星际穿越.IMAX版.修正特效中英字幕.Interstellar.2014.BD720P.X264.AAC.English&Mandarin.CHS-ENG.Mp4Ba.mp4
体积:3.26GB 封装:MP4 视频:H.264 1280×720 2500Kbps 音频:AAC 128Kbps (x2)

字幕情况:基本上而言,和深影版相同。同样的特效字幕,同样的国配版翻译。但是中文字幕的断句和深影有小区别。字体:

星际穿越.IMAX版.修正特效中英字幕.Interstellar.2014.BD720P.X264.AAC.English&Mandarin.CHS-ENG.Mp4Ba.mp4_003937.116

可以看到字体和深影的不太一样,不过区别很小。音量,也是调整过的,很棒。和深影的比稍微小了那么一点点。

3. 人人(?)版本1

下载地址

前面黑过人人的MP4版,那自然也要来对比下不是。不过奇怪的是人人这片出了两个版本:byhh以及cili003链接(注意两个2.3GB的有一个是V2,故实际上有2.1和2.3GB俩版本)。先说说3月16日发布的、2.1GB的版本。

文件名:Interstellar.2014.星际穿越.720p.Chi_Eng.BD-MP4.mp4 (不同网站下可能会有各种乱七八糟的后缀)
体积:2.11GB 封装:MP4 视频:H.264 1280×720 1599Kbps 音频:AAC 192Kbps

字幕情况:可以看到,这个视频文件名并没有任何标示,所以到底算不算人人的片呢?片头倒是有职员名单就是了。字母的来源依然是国配,但是并没有特效(前面忘了说了,所谓特效…是指片头logo处的各种特效。虽然没什么卵用但是聊胜于无)。字体效果:

Interstellar.2014.星际穿越.720p.Chi_Eng.BD-MP4.mp4_003937.037

字体和上面两个依然很像。音量就像我上面说的,是维持了片源原始状态——很小,真的很小。另外这个的视频的码率确实低了点,但是放平板上是没区别啦。

4. 人人版本2

下载地址

准确地说,这个打有“ZMZ”才是正儿八经的人人版。

文件名:Interstellar.2014.星际穿越.720p.Chi_Eng.ZMZ-BD-MP4-V2.mp4 (不同网站下可能会有各种乱七八糟的后缀)
体积:2.27GB 封装:MP4 视频:H.264 1280×720 1799Kbps 音频:AAC 128Kbps

字幕情况:字幕并不是国配,是人人自行制作的,片头有职员名单。质量嘛自然也是人人往常的质量,稍有错误但是不影响大局,而且比起国配版和英文原文更匹配一些。也很有骨气地没有用人家的特效字幕(咦?),但对于片头一些关键字样如发行商也添加了中文就是(所以说到底谁在乎这个啊…)。字体效果:

Interstellar.2014.星际穿越.720p.Chi_Eng.ZMZ-BD-MP4-V2.mp4_003937.123

安定的蓝边儿字!然并卵,没调整过的音量实在是太小了,我很不开心。

综合而言,我以后可能会选用深影的或者MP4吧的。只是我很怀疑MP4吧有自行翻译的能力,所以具体字幕素质如何得看他从哪来扣来的……深影嘛这次虽然也不是他们自己翻译的,但是根据之前看超能陆战队的表现来看,马马虎虎可以接受了;而且他们的码率真的比较足。

那么,本文到这里也就结束啦。多扯一句,重新看了遍带字幕的我得修正之前的结论,《星际穿越》是好片!虽然确实和诺兰之前的片不是一个味儿。

折腾了1小时解码包,回到原点…

如题。原来一直用的完美解码09年的一个版:PureCodec20091225,工作一切正常。解码器这种东西我的原则一般是够用就不换,这玩意折腾起来太麻烦,上次换就是因为coreAVC不升级到2.0很多新压的电影都会花屏,不得已而为之。

这次又来了类似的问题:前几天下了个哈7的720P:Harry.Potter.And.The.Deathly.Hallows.Part.1.REPACK.720p.BluRay.x264-TWiZTED,打开一看无论是coreAVC 1.5还是2.0都是各种花屏,ffdshow没事,估计是x264又进化出了什么新的参数罢。于是琢磨着这也1年多了,顺手换个新解码包好了。但是完美解码后面又是变完美者解码又是加各种捆绑,甚至到现在作者DIO本人都跑路了,实在是让人不太放心,但是我还是下了个最新版,20110330,恰好是昨天更新的。

安装一切顺利,控制台是新作者Nick重做的,无论是外观还是实用性上个人认为都不如dio原版,不过影响不大。我也没什么好改的,把默认播放器改成kmp,渲染器改成haali之后就算完成,然后进入kmp一顿设置,没发现什么问题,就吃夜宵去了。结果回来点看那哈利波特——慢着,怎么还花屏?打开滤镜信息一看:坑爹呀,coreAVC还是2.0.0!那我不是白忙活了吗!算了只要别的没什么问题,把别的一堆解码器分离器什么的升级下也不是坏事——慢着,怎么字幕加载不出来?我明明已经勾选了vobsub 2.39才对…检查了一遍,没错,但字幕就是出不来。尝试更换为mpc-hc,或者换用别的渲染器,依然无果;重装之,纯默认设置下可以出来,但是一旦动了渲染器设置vobsub就跟被反注册了似的怎么都出不来(改回去都不行)。

看来这个版本是没法用了,于是我去找了个带dio控制台的最后版本——20110126,结果这货更弱,kmp默认设置有问题,解码器全用的kmp内置解码器,于是控制台里怎么改根本没意义;而且kmp默认不显示高级菜单也让我很不适应。用控制台重置kmp设置之后恢复(吐槽:你的默认设置居然和刚装好时的初始设置不一样,请问那么这叫哪门子的默认设置?),但是又出现个很蛋疼的问题:播放视频时左下视频编码表示是黑的…虽然不影响播放,但是看着就难受,于是我赶紧把它卸了。

后来我想,干脆尝试下终极解码算了,就去找了个来装。安装一切顺利,之后控制台跳出来了。终极解码其实我也用过,不过这个控制台实在是不适应,看着太挤而且很多选项不知道干吗的orz。这些略去不表,我很快就发现最大的问题——它居然不带haali渲染器!那别的也不用废话了,直接卸。

于是……我又装回了Pure Codec 20091225版。至于那个哈利波特嘛…我决定再去重下个CHD压的版本orz。如果以后这类“花屏”视频多了,自己手动升级个coreAVC好了…