我的八年長征:將 45 卷錄影帶數位化(上篇)
原文由 Michael Lynch 于 發布,訂閱此部落格
過去八年來,我帶著這箱錄影帶輾轉搬過四間公寓和一棟房子。裡面全是我小時候的家庭錄影。
經過超過 600 小時的努力,我終於把這些錄影帶完整數位化並整理好,好到足以把原版錄影帶全丟掉。現在的成果長這樣:


我所有的家庭影片都已數位化,可以在私人的影音分享伺服器上觀看
總共有 513 段獨立的影片,每一段都有標題、說明、錄製日期、標註片中出現的每個人,以及當時每個人的年齡。所有影片都放在只有家人能存取的私人影音分享網站上,每個月維護費用不到 1 美元。
這篇文章會說明我是怎麼辦到的、為什麼花了八年,以及你要怎麼做才能用稍微輕鬆一點的方式達到同樣的成果。
我天真的第一次嘗試
大約在 2010 年,我媽買了一種 VHS 轉 DVD 的轉換器,把我們所有的家庭影片都轉了過去。

我媽轉錄的 DVD 原始備份(我也不確定中間缺掉的字母是怎麼回事)
問題是,DVD 只有一套。而我們全家人分散住在不同的州,輪流傳光碟非常不方便。
2012 年,我姊把這些 DVD 拿給我。我把裡面的影片轉成檔案,全部丟上雲端儲存空間。問題解決了!

在 Google Cloud Storage 上分享我家家庭影片的 DVD 轉檔
幾週後,我問大家有沒有看這些影片。結果沒人看,我自己也沒看。在 YouTube 的時代,要下載一個長達 3 小時的神秘檔案,只為了尋找有趣的片段,實在太無聊了。
唯一感到興奮的是我媽。她說:「好,太棒了,那我現在終於可以把這些錄影帶全丟掉了吧?」
糟了,這問題讓人有點害怕。會不會有我們漏掉的錄影帶?能不能用更高的畫質來數位化?VHS 錄影帶標籤上會不會有什麼有趣的資訊?
除非我確定已經用最高的畫質完整備份了所有影片,否則我絕對不敢安心把原版錄影帶丟掉。這意味著得由我自己來做。
那時的我,完全不知道自己即將踏進多大的坑。
聽起來好像沒那麼難
如果你好奇為什麼這件事會花我八年、數百個小時,我完全能理解。我一開始也以為這會是個輕鬆的專案。
整個數位化流程從頭到尾看起來是這樣:
更精確地說,那只是理論上的流程。實際上的狀況是這樣:
我花的絕大多數時間都在重做。往往完成一個階段後,才在一兩個步驟之後發現做法有瑕疵。例如,我已經擷取了 20 卷錄影帶,才發現音訊有點不同步。或是花了好幾週剪輯後,才發現自己輸出的影片格式根本不支援線上串流。
為了大家的精神健康著想,接下來我會用一路順暢向前的角度來說明流程,而不是逼著讀者跟我一起不斷走回頭路、重頭來過。
步驟一:影片擷取
好,回到 2012 年。我媽急著想結束她長達 20 年保管家庭錄影帶的任務,所以下次見面時,她交給我一大箱紙箱裝的錄影帶。我的數位化冒險就此展開。
最直接的解法當然是外包給專業人士。市面上有很多數位化公司,其中不乏專門處理老舊家庭影片的業者。
我對隱私還算在意,所以不太想把包含我小時候如廁訓練(在正常的年紀,沒什麼奇怪的!)的影片交給陌生人。再說,我心想,數位化影片能有多難?
先劇透一下:超級難。
我的第一次影片擷取嘗試
家裡那台舊錄放影機還在我爸的地下室,所以我請他在下次吃午餐時幫我挖出來。我在 Amazon 買了一個便宜的 RCA 轉 USB 轉接器,就馬上開工了。

TOTMC 影像擷取裝置,是我在這段過程中購買的眾多影音設備中的第一個。
為了處理來自 USB 擷取裝置的影片,我用了 VirtualDub,這套軟體在 2012 年就已經有點老舊,但還不算太過時。

使用 VirtualDub 擷取我 4 歲時唸書給爸爸聽的原始畫面
惱人的音訊偏移夢魘
開始剪輯後,我發現音訊和影像有點不同步。好吧,沒關係,把音訊稍微往前或往後移一下就好。
十分鐘後,又不同步了。難道我第一次移得不夠多?
我才慢慢意識到,音訊和影像不只是單純的位移——它們是以不同的速率擷取的。隨著錄影帶播放,它們會越差越遠。為了保持同步,我每隔幾分鐘就得手動調整一次音訊。

如果你的設備以不同速率擷取音訊和影像,唯一的解法就是每隔幾分鐘就手動修正一次音訊。
你知道要分辨一個聲音是提早了 10 毫秒還是延遲了 10 毫秒有多難嗎?超難!不信你自己判斷看看。
這裡有一段我和我那隻可憐又乖巧的貓咪 Black Magic 玩耍的影片。音訊和影像有點不同步。音訊是超前還是落後呢?
音訊與影像不同步的影片範例
這是 Magic 跳起來的那一段,放慢到 1/5 速度:
音訊與影像不同步,放慢至 1/5 速度
或許我該多花一百美元,而不是浪費數百小時
光是修正音訊就花了我好幾個小時,枯燥又折磨人。我終於想到,或許只要不買 Amazon 上最便宜的影像擷取裝置,就能避開這個麻煩。做了更多功課後,我又買了一個新的:

我第二次購買影像擷取裝置的嘗試
即使換了新裝置,音訊還是會偏移。
升級到 Super
或許問題出在錄放影機。數位化論壇上說,如果 VCR 有「時基校正器」(TBC),就不會出現音訊偏移,這是 Super VHS(S-VHS)錄放影機常見的功能。
原來如此!我到底在幹嘛,還在用那台笨笨的普通錄放影機,明明有超級錄放影機可以解決我的問題?
現在已經沒人製造 S-VHS 錄放影機了,但在 eBay 上還買得到。我花了 179 美元買了一台 JVC SR-V10U,據說這個型號很適合用來數位化 VHS:

我在 eBay 上花 179 美元買的復古 JVC SR-V10U 錄放影機
超級錄放影機寄到了。經過好幾個月的聲音不同步折磨,我欣喜若狂地拿著這台號稱能解決所有問題的設備。
我打開箱子,接好所有線路,結果音訊還是一樣不同步。唉。
繁瑣的除錯與長達數年的停滯
硬體除錯的過程非常痛苦。我得把所有設備從衣櫃裡搬出來,爬到桌機後面把線全部接上,試著擷取一次,然後發現還是不行。
喔,2008 年某篇論壇文章說要安裝某個來路不明、沒有簽署的中國裝置驅動程式?這主意糟透了,但我已經走投無路。結果還是沒用。
我試了不同的擷取軟體。買了一捲專用的 VHS 清潔帶來清潔錄放影機的磁頭。還買了第三個擷取裝置。結果都一樣。
每次最後都是放棄,把所有東西拔掉,再把設備打入衣櫃冷宮好幾個月。
投降,交給專業的來
時間快轉到 2018 年。我已經帶著這些錄影帶和一堆設備搬過四間不同的公寓,正準備要從紐約市搬到麻薩諸塞州。我實在沒辦法說服自己,還要再把這些東西搬去下一個地方,尤其我已經很清楚靠自己永遠也做不完。
我問家人是否介意我把錄影帶寄給數位化公司。還好大家都不介意——他們更想再看到那些畫面。
我:但這代表有間公司會看到我們所有的家庭影片。這樣你們 OK 嗎?
我姊:對啊,我無所謂。只有你在擔心這個。等等,你本來就可以直接花錢請人做喔?
我:呃⋯
把全部 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 繪製。
特別感謝我的家人願意讓我分享部分影片與截圖、當初用心記錄下這一切,以及在整個過程中的大力支持。
隨機一篇部落格



留言
登入後參與討論