My Eight-Year Quest to Digitize 45 Videotapes (Part One)

Michael Lynch

我的八年長征:將 45 卷錄影帶數位化(上篇)

原文由 Michael Lynch 發布,訂閱此部落格

過去八年來,我帶著這箱錄影帶輾轉搬過四間公寓和一棟房子。裡面全是我小時候的家庭錄影。

我們家所有的老舊家庭影片

經過超過 600 小時的努力,我終於把這些錄影帶完整數位化並整理好,好到足以把原版錄影帶全丟掉。現在的成果長這樣:

MediaGoblin 瀏覽畫面MediaGoblin 播放影片的截圖

我所有的家庭影片都已數位化,可以在私人的影音分享伺服器上觀看

總共有 513 段獨立的影片,每一段都有標題、說明、錄製日期、標註片中出現的每個人,以及當時每個人的年齡。所有影片都放在只有家人能存取的私人影音分享網站上,每個月維護費用不到 1 美元。

這篇文章會說明我是怎麼辦到的、為什麼花了八年,以及你要怎麼做才能用稍微輕鬆一點的方式達到同樣的成果。

我天真的第一次嘗試

大約在 2010 年,我媽買了一種 VHS 轉 DVD 的轉換器,把我們所有的家庭影片都轉了過去。

標示著字母的可重複寫入 DVD 照片

我媽轉錄的 DVD 原始備份(我也不確定中間缺掉的字母是怎麼回事)

問題是,DVD 只有一套。而我們全家人分散住在不同的州,輪流傳光碟非常不方便。

2012 年,我姊把這些 DVD 拿給我。我把裡面的影片轉成檔案,全部丟上雲端儲存空間。問題解決了!

我在 Google Cloud Storage 上轉檔後的 DVD 檔案截圖

在 Google Cloud Storage 上分享我家家庭影片的 DVD 轉檔

幾週後,我問大家有沒有看這些影片。結果沒人看,我自己也沒看。在 YouTube 的時代,要下載一個長達 3 小時的神秘檔案,只為了尋找有趣的片段,實在太無聊了。

唯一感到興奮的是我媽。她說:「好,太棒了,那我現在終於可以把這些錄影帶全丟掉了吧?」

糟了,這問題讓人有點害怕。會不會有我們漏掉的錄影帶?能不能用更高的畫質來數位化?VHS 錄影帶標籤上會不會有什麼有趣的資訊?

除非我確定已經用最高的畫質完整備份了所有影片,否則我絕對不敢安心把原版錄影帶丟掉。這意味著得由我自己來做。

那時的我,完全不知道自己即將踏進多大的坑。

聽起來好像沒那麼難

如果你好奇為什麼這件事會花我八年、數百個小時,我完全能理解。我一開始也以為這會是個輕鬆的專案。

整個數位化流程從頭到尾看起來是這樣:

TODO

更精確地說,那只是理論上的流程。實際上的狀況是這樣:

TODO

我花的絕大多數時間都在重做。往往完成一個階段後,才在一兩個步驟之後發現做法有瑕疵。例如,我已經擷取了 20 卷錄影帶,才發現音訊有點不同步。或是花了好幾週剪輯後,才發現自己輸出的影片格式根本不支援線上串流。

為了大家的精神健康著想,接下來我會用一路順暢向前的角度來說明流程,而不是逼著讀者跟我一起不斷走回頭路、重頭來過。

步驟一:影片擷取

好,回到 2012 年。我媽急著想結束她長達 20 年保管家庭錄影帶的任務,所以下次見面時,她交給我一大箱紙箱裝的錄影帶。我的數位化冒險就此展開。

最直接的解法當然是外包給專業人士。市面上有很多數位化公司,其中不乏專門處理老舊家庭影片的業者。

我對隱私還算在意,所以不太想把包含我小時候如廁訓練(在正常的年紀,沒什麼奇怪的!)的影片交給陌生人。再說,我心想,數位化影片能有多難?

先劇透一下:超級難。

我的第一次影片擷取嘗試

家裡那台舊錄放影機還在我爸的地下室,所以我請他在下次吃午餐時幫我挖出來。我在 Amazon 買了一個便宜的 RCA 轉 USB 轉接器,就馬上開工了。

TOTMC RCA 轉 USB 轉接器的照片

TOTMC 影像擷取裝置,是我在這段過程中購買的眾多影音設備中的第一個。

為了處理來自 USB 擷取裝置的影片,我用了 VirtualDub,這套軟體在 2012 年就已經有點老舊,但還不算過時。

在 VirtualDub 中擷取影片

使用 VirtualDub 擷取我 4 歲時唸書給爸爸聽的原始畫面

惱人的音訊偏移夢魘

開始剪輯後,我發現音訊和影像有點不同步。好吧,沒關係,把音訊稍微往前或往後移一下就好。

十分鐘後,又不同步了。難道我第一次移得不夠多?

我才慢慢意識到,音訊和影像不只是單純的位移——它們是以不同的速率擷取的。隨著錄影帶播放,它們會越差越遠。為了保持同步,我每隔幾分鐘就得手動調整一次音訊。

有無修正的音訊偏移示意圖

如果你的設備以不同速率擷取音訊和影像,唯一的解法就是每隔幾分鐘就手動修正一次音訊。

你知道要分辨一個聲音是提早了 10 毫秒還是延遲了 10 毫秒有多難嗎?超難!不信你自己判斷看看。

這裡有一段我和我那隻可憐又乖巧的貓咪 Black Magic 玩耍的影片。音訊和影像有點不同步。音訊是超前還是落後呢?

音訊與影像不同步的影片範例

這是 Magic 跳起來的那一段,放慢到 1/5 速度:

音訊與影像不同步,放慢至 1/5 速度

答案:音訊慢了幾毫秒。

或許我該多花一百美元,而不是浪費數百小時

光是修正音訊就花了我好幾個小時,枯燥又折磨人。我終於想到,或許只要不買 Amazon 上最便宜的影像擷取裝置,就能避開這個麻煩。做了更多功課後,我又買了一個新的:

GV-USB2 影像擷取裝置

我第二次購買影像擷取裝置的嘗試

即使換了新裝置,音訊還是會偏移。

升級到 Super

或許問題出在錄放影機。數位化論壇上說,如果 VCR 有「時基校正器」(TBC),就不會出現音訊偏移,這是 Super VHS(S-VHS)錄放影機常見的功能。

原來如此!我到底在幹嘛,還在用那台笨笨的普通錄放影機,明明有超級錄放影機可以解決我的問題?

現在已經沒人製造 S-VHS 錄放影機了,但在 eBay 上還買得到。我花了 179 美元買了一台 JVC SR-V10U,據說這個型號很適合用來數位化 VHS:

支援 S-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 可縮放時間軸編輯功能的截圖

Adobe Premiere Elements 中無價的可縮放剪輯時間軸

Premiere 的問題在於需要不斷地開始與停止。我的流程是:

  1. 開啟一個包含 30 到 120 分鐘影片的原始擷取檔。
  2. 標記單一片段的邊界。
  3. 匯出該片段。
  4. 等待 2 到 15 分鐘直到匯出完成。
  5. 重複步驟 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 繪製。

特別感謝我的家人願意讓我分享部分影片與截圖、當初用心記錄下這一切,以及在整個過程中的大力支持。

本文章由 muse-spark-1.2-contributor 進行翻譯

留言