我历时八年数字化45盘录像带之旅(上)
原文由 Michael Lynch 于 发布,订阅该博客
过去八年里,我带着这箱录像带辗转于四个公寓和一栋房子,里面全是我童年时的家庭录像。
经过600多个小时的努力,我终于把它们全部数字化并整理妥当,已经可以放心地扔掉原带了。现在的成片是这样的:


所有家庭录像都已数字化,可以在私有的媒体分享服务器上观看
共有513个独立片段,每个片段都有标题、简介、拍摄日期、出镜人物的标签,以及每个人当时的年龄。所有视频都托管在一个仅供家人访问的私有媒体分享网站上,每月维护成本不到1美元。
这篇文章会讲讲我是怎么做到的,为什么花了八年时间,以及你如何用更省力的方式实现同样的效果。
我天真的第一次尝试
大约在2010年,我妈买了一台VHS转DVD的转换器,把我们所有的家庭录像都转录了一遍。

我妈用录像带转录的原始DVD光盘(中间缺了几个字母,我也不清楚是怎么回事)
问题是DVD只有一套。我们全家分散在不同的州,互相传盘很不方便。
2012年,我姐把这些DVD给了我。我把它们翻录成视频文件,全部上传到了云存储。问题解决了!

在 Google Cloud Storage 上分享翻录的家庭录像DVD
几周后,我问大家有没有看过这些录像。没人看过,我自己也没看。在YouTube时代,要下载一个长达3小时、内容不明的神秘文件去寻找有趣的片段,实在太无聊了。
只有我妈很兴奋。“太好了,”她说,“那我现在终于可以把这些带子都扔掉了吧?”
糟糕,这是个让人害怕的问题。万一有漏掉的带子怎么办?万一可以用更高的画质来数字化呢?万一VHS带子标签上还有什么有趣的信息呢?
在确信我们已经以最高画质完整地保存了所有视频之前,我绝不敢放心地扔掉原带。这意味着得由我自己来做这件事。
我完全没想到自己会陷进去多深。
听起来好像没那么难
如果你好奇为什么这件事花了我八年、几百个小时,我完全理解。我一开始也以为这是个简单的活儿。
整个数字化流程从头到尾看起来是这样的:
或者说,这只是理论上的数字化流程。实际上的情况是这样的:
我花的大部分时间都在返工。常常是完成一个阶段后,过了一两步才发现方法有缺陷。比如,我采集完20盘带子的视频后,才发现音频有点不同步。还有一次,剪辑了几周后才发现,我导出的视频格式根本不支持在线播放。
为了不让大家跟着我一起崩溃,我会把整个过程当作是一路向前推进来讲,而不是让读者和我一起不断地回头重来。
第一步:视频采集
好,回到2012年。我妈急于结束她长达20年对家庭录像的“保管”,所以下次见面时,她直接递给我一大纸箱录像带。我的数字化冒险就此开始。
最直接的办法是找专业机构外包。市面上有很多数字化公司,其中就有专门处理老式家庭录像的。
我对隐私比较在意,不太愿意把包含我小时候如厕训练画面(年纪很小,很正常!)的录像交给陌生人。再说,我当时想,数字化视频能有多难?
剧透一下:非常难。
我第一次尝试采集视频
家里那台旧录像机还在我爸的地下室里,于是我让他下次一起吃午饭时把它翻出来。我在亚马逊上买了一个便宜的 RCA 转 USB 采集卡,就兴冲冲地开干了。

TOTMC 视频采集设备,这是我在整个过程中购买的众多音视频设备中的第一件。
为了处理来自 USB 采集卡的视频,我用了 VirtualDub,这个软件在2012年就已经有点过时了,但还没那么过时。

用 VirtualDub 采集我4岁时给爸爸读书的原始素材
音画不同步的顽疾
刚开始剪辑时,我发现音视频有点不同步。好吧,没问题,把音频稍微挪一下就行。
十分钟后,又不同步了。难道是第一次挪得不够?
我慢慢才意识到,音视频不只是简单的偏移——它们的采集速率不一致。随着磁带播放,偏差会越来越大。为了保持同步,我每隔几分钟就得手动调整一次音频。

如果你的设备以不同的速率采集音视频,唯一的办法就是每隔几分钟手动校正一次音频。
你知道要分辨一个声音是早了10毫秒还是晚了10毫秒有多难吗?非常难!不信你自己来判断一下。
这段视频是我在逗我那只可怜又耐心的小猫 Black Magic,音视频有点不同步。你觉得音频是超前了还是滞后了?
音视频不同步的视频片段示例
这是 Magic 起跳的那一段,放慢到了1/5速度:
音视频不同步,放慢至1/5速度
也许我该多花一百美元,而不是浪费几百个小时
光是校正音频就花了我好几个小时,枯燥又折磨人。我终于想到,如果不买亚马逊上最便宜的视频采集卡,也许就能省去这个麻烦。研究了一番后,我买了个新的:

我第二次购买视频采集设备
即使换了新设备,音频依然不同步。
试试“超级”录像机
也许问题出在录像机上。数字化论坛上说,带“时基校正器”(TBC)的录像机就不会出现音画偏移,这是 Super VHS(S-VHS)录像机的常见功能。
原来如此!放着能解决问题的普通录像机不用,我还在那儿折腾什么破普通录像机,居然有超级录像机能解决我的问题?
现在已经没人生产 S-VHS 录像机了,但在 eBay 上还能买到。我花179美元买了一台 JVC SR-V10U,据说这个型号很适合做 VHS 数字化:

我在 eBay 上花179美元买的复古 JVC SR-V10U 录像机
超级录像机寄到了。经过几个月与音画不同步的搏斗,我捧着这台据说能解决所有问题的设备,欣喜若狂。
我打开包装,接好所有线,然后——音频还是不同步。唉。
繁琐的排查与长达数年的停滞
排查硬件的过程痛苦不堪。我得把所有设备从壁橱里搬出来,爬到台式机后面把线接好,试着采集一次,结果发现还是不行。
哦,2008年某个论坛的帖子说要装一个来路不明、没有签名的中文驱动?这主意糟透了,但我已经走投无路。装了也没用。
我试了不同的采集软件。买了一盘专门的 VHS 清洁带来清洁录像机的磁头。还买了第三个采集卡。结果总是一样。
最后总是以放弃告终,拔掉所有线,把设备打入壁橱,一放就是好几个月。
向专业机构投降
时间快进到2018年。我已经带着这些录像带和一大堆设备搬了四个公寓,正准备从纽约市搬到马萨诸塞州。我已经很清楚靠自己永远也完不成这个项目,实在没理由再带着这些东西搬一次家了。
我问家人是否介意我把带子寄给数字化公司。好在大家都不介意——他们更想早点再看到这些画面。
我:但这意味着有家公司能看到我们所有的家庭录像。你们真的不介意吗?
我姐:不介意啊,就你在担心这个。等等,你一开始直接花钱找人做不就行了?
我:呃……
数字化全部45盘带子花了750美元。听起来可能很贵,但到了那会儿,哪怕让我再多花点钱,只要不用再折腾视频设备一分钟,我都愿意。
文件拿回来后,画质明显更好。我自己采的视频边缘总有“撕裂”现象,而专业机构转录的则完全没有失真。最棒的是,音视频完美同步。
下面这段视频对比了专业机构的采集效果和我自己的采集效果:
专业机构与我个人采集效果的对比,内容是我妈记录我第一次写代码的经历
第二步:剪辑
家庭录像里,大约90%的素材很无聊,8%有点意思,只有2%称得上精彩。即使完成了数字化,后面还有大量工作要做。
用 Adobe Premiere 剪辑
VHS 磁带里是一长串视频片段和空白段混在一起。要剪辑一盘带子,就得找出每个片段的起止位置。
我用的是 Adobe Premiere Elements,终身授权不到100美元。它对剪辑 VHS 最关键的功能是可缩放的时间轴,可以先快速找到大致的场景分界,再放大精确定位每个片段起止的那一帧。

Adobe Premiere Elements 中不可或缺的可缩放剪辑时间轴
Premiere 的问题是需要频繁地启停。我的流程是这样的:
- 打开一个包含30到120分钟视频的原始采集文件。
- 标记单个片段的边界。
- 导出该片段。
- 等待2到15分钟,直到导出完成。
- 重复第2到4步,直到整盘带子处理完毕。
长时间的等待意味着我得在视频剪辑和其他事情之间来回切换,注意力被搅得一团糟,一耗就是好几个小时
另一个缺点是不可复现。改一个小错误,几乎和从头重做一样费劲。这一点在进入视频分享阶段时让我吃了大亏。直到那时我才意识到,本该把视频导出为浏览器可直接在线播放的格式。摆在我面前的只有两个选择:要么重新走一遍繁琐的流程导出数百个片段,要么把已导出的视频转码成另一种格式,但这会损失画质。
自动化剪辑
在手工操作上浪费了多到难为情的时间后,我开始想,能不能直接用人工智能来解决这个问题。识别片段边界看起来很适合用机器学习来做。我知道准确率不会完美,但也许它能完成80%的工作,剩下的20%我再手动修正。
我试用了一个叫pyscenedetect 的工具,它会分析视频文件并打印出发生场景切换的时间码:
$ docker run
--volume "/videos:/opt"
handflucht/pyscenedetect
--input /opt/test.mp4
--output /opt
detect-content --threshold 80
list-scenes
[PySceneDetect] Output directory set:
/opt
[PySceneDetect] Loaded 1 video, framerate: 29.97 FPS, resolution: 720 x 480
[PySceneDetect] Downscale factor set to 3, effective resolution: 240 x 160
[PySceneDetect] Scene list CSV file name format:
$VIDEO_NAME-Scenes.csv
[PySceneDetect] Detecting scenes...
[PySceneDetect] Processed 55135 frames in 117.6 seconds (average 468.96 FPS).
[PySceneDetect] Detected 33 scenes, average shot length 55.7 seconds.
[PySceneDetect] Writing scene list to CSV file:
/opt/test-Scenes.csv
[PySceneDetect] Scene List:
-----------------------------------------------------------------------
| Scene # | Start Frame | Start Time | End Frame | End Time |
-----------------------------------------------------------------------
| 1 | 0 | 00:00:00.000 | 1011 | 00:00:33.734 |
| 2 | 1011 | 00:00:33.734 | 1292 | 00:00:43.110 |
| 3 | 1292 | 00:00:43.110 | 1878 | 00:01:02.663 |
| 4 | 1878 | 00:01:02.663 | 2027 | 00:01:07.634 |
...
它的准确率确实有80%左右,但检查它的结果反而比它节省的时间花得更多。不过,pyscenedetect 让我产生了整个项目中最重要的一个领悟:识别场景边界和导出片段是两件独立的事情。
我想起自己是个程序员
在此之前,我一直把在 Adobe Premiere 里做的所有事都当作“剪辑”。把原始素材切成小片段和寻找片段边界,在我看来是密不可分的,因为 Premiere 就是这么呈现的。当 pyscenedetect 打印出那张元数据表格时,我才意识到可以把寻找场景和导出视频解耦。这是个转折点。
剪辑之所以如此繁琐耗时,是因为我得一直等 Premiere 逐个导出片段。如果我把元数据记录在电子表格里,再写个脚本自动导出视频,剪辑过程就会快得多。
更重要的是,电子表格极大地扩展了我能记录的信息类型。一开始我把元数据都塞进文件名,但那样既受限又不灵活。有了完整的表格,我就能为每个片段记录更多信息,比如谁在里面、什么时候拍的,以及观看时想一并展示的任何其他数据。

在一张巨大的电子表格中记录家庭录像的元数据
后来,我利用这些元数据为片段添加了更多信息,比如我们当时的年龄,以及对片段内容的详细描述。

有了电子表格的灵活性,我可以记录更多关于片段的元数据,让它们包含更丰富的信息,也更便于浏览。
自动化方案的魅力
有了这张表格,我写了一个脚本,可以根据 CSV 输入把原始视频切成更小的片段。
到这个时候,我已经花了数百个小时在 Premiere 里枯燥地选取片段边界、点击导出、等上几分钟完成后再重新开始。不仅如此,在后来发现画质问题后,我还在同一批素材上反复重来了好几次。
一旦把切分片段的工作自动化,我肩上的重担一下子就卸下来了。我再也不用担心漏掉元数据或选错输出格式。即使事后发现错误,也只需改改脚本重新跑一遍就行。
第二部分
采集和剪辑片段只完成了一半的战斗。我还需要找到一种有趣、安全又经济的方式,把所有视频分享给家人。
在本文的下篇中,我会介绍我是如何用一个开源媒体服务器,以每月仅0.77美元的成本与家人分享这些片段的。
插图作者:Loraine Yow。
特别感谢我的家人允许我分享这些片段和截图中的一部分,感谢他们当初记录下这一切,并在整个过程中给予我的大力支持。
随机一篇博客



评论
登录后参与讨论