八年來,我把這盒錄像帶搬到了四間不同的公寓和一棟房子裡。 我小時候的家庭視頻。
經過600多個小時的工作,我終於將它們數字化並妥善整理,這樣磁帶就可以扔掉了。
Часть2
所有家庭視頻均已數字化,可通過私人媒體服務器觀看
這產生了 513 個單獨的視頻剪輯。 每個都有標題、描述、錄製日期、所有參與者的標籤,表明錄製時的年齡。 所有內容都位於只有家庭成員才能訪問的私人媒體服務器上,並且每月託管費用不到 1 美元。
這篇文章講述了我所做的一切,為什麼花了八年時間,以及如何更容易、更快地實現相同的結果。
第一次天真的嘗試
2010 年左右,我媽媽買了某種 VHS 到 DVD 轉換器,並通過它播放我們所有的家庭視頻。
我媽媽錄製的原始DVD(不知道丟失的字母發生了什麼)
問題是,媽媽只製作了一套DVD。 親戚們都住在不同的州,所以傳遞光盤很不方便。
2012年,我姐姐給了我這些DVD。 我複制了視頻文件並將所有內容上傳到雲存儲。 問題解決了!
Google Cloud 存儲中家庭視頻的 DVD 翻錄
幾週後,我問是否有人看過這些錄像帶。 結果沒人看。 我連看都沒看。 在 YouTube 時代,下載三個小時的未知內容文件來尋找有趣的片段是愚蠢的。
只有我母親很高興:“太好了,”她說,“現在我們終於可以扔掉所有這些磁帶了嗎?”
哦哦。 這是一個可怕的問題。 如果我們錯過了一些條目怎麼辦? 如果磁帶能夠以更高的質量數字化會怎樣? 如果標籤包含重要信息怎麼辦?
在完全確定視頻被複製到盡可能高的質量之前,我總是對扔掉原件感到不舒服。 因此,我必須言歸正傳。
我什至不知道自己陷入了什麼境地。
聽起來沒那麼難
如果你不明白為什麼我花了八年和數百小時,我不會責怪你。 我也以為這很容易。
以下是數字化過程從開始到結束的樣子:
更準確地說,這就是理論上的樣子。 實踐結果如下:
大部分時間都花在了返工已經完成的事情上。 我完成了一個階段,然後在一兩個階段之後我發現了技術中的某種缺陷。 我不得不回去重做。 例如,我用 20 盤磁帶拍攝了視頻,然後才意識到音頻有點不同步。 或者經過幾週的編輯後,我發現自己導出的視頻格式不支持網絡流式傳輸。
為了保持讀者的理智,我將這個過程佈置得好像它正在以系統的方式向前推進,以免讓你不斷地向後跳並重做所有事情,就像我必須做的那樣。
步驟1拍攝視頻
好吧,回到2012年。 媽媽很想扔掉她珍藏了二十年的磁帶,所以當我們第一次見面時,她立刻遞給我一個巨大的紙箱。 於是我開始了對數字化的探索。
顯而易見的決定是將這項工作委託給專業人員。 許多公司都從事數字化,有些公司專門從事家庭視頻業務。
但我對隱私非常敏感,我不想讓陌生人觀看我們的家庭視頻,其中包含我個人生活的親密時刻,包括我的如廁訓練(在適當的年齡;沒什麼奇怪的!)。 我還認為數字化沒有什麼複雜的。
劇透:事實證明這真的很困難。
第一次嘗試捕捉視頻
我父親還保留著家裡的舊錄像機,所以我讓他把它從地下室挖出來,供下次家庭聚餐時使用。 我買了
為了處理來自 USB 捕獲設備的視頻,我使用了 VirtualDub 程序,2012 版本有點過時,但並不重要。
VirtualDub 程序中的幀,當我四歲時給父親讀一本書時
聲音失真的攻擊
當我開始編輯過程時,我注意到音頻和視頻之間略有不同步。 好的沒問題。 我可以稍微移動一下聲音。
十分鐘後,他又失去了同步。 我第一次移動它了嗎?
我逐漸意識到,音頻和視頻不僅不同步,而且實際上是以不同的速度錄製的。 在整個錄像帶中,他們的分歧越來越大。 為了同步,我必須每隔幾分鐘手動調整聲音。
如果您的設置以不同的速率捕獲音頻和視頻,那麼唯一的解決方案是每隔幾分鐘手動校正音頻
你能想像區分10毫秒前或10毫秒後的聲音有多困難嗎? 真的很難啊! 你自己判斷吧。
在這段視頻中,我正在和我可憐的、有耐心的小貓玩耍,它的名字叫黑魔法。 聲音有點不同步。 判斷是超前還是晚了?
聲音和圖像不同步的視頻剪輯示例
此時,黑魔法跳躍,一個減速五倍的片段:
聲音和圖像不同步,慢五倍
回答:聲音有幾毫秒的延遲。
也許多花一百美元而不是數百小時的個人時間?
僅聲音校正一項就需要花費大量時間進行乏味且令人發狂的工作。 最終我想到可以通過使用更好、更昂貴的視頻捕獲設備來避免不同步。 經過一番研究,我在亞馬遜上買了一件新的:
我的第二次嘗試購買
即使使用新設備,不同步現像也沒有消失。
帶有“super”前綴的 VCR
也許問題出在錄像機上。 在
嗯,當然! 為什麼我要和蠢人打交道 普通 錄像機(如有) 超級-VCR能解決這個問題嗎?
沒有人再生產 S-VHS 錄像機,但它們仍然可以在 eBay 上購買。 我花了 179 美元買了一台 JVC SR-V10U 型號,它似乎非常適合 VHS 數字化:
我在 eBay 上花了 10 美元買的老式 JVC SR-V179U 錄像機
“超級”錄像機郵寄過來。 經過幾個月與音頻不同步的鬥爭後,我很高興有設備可以解決我所有的問題。
我打開盒子,連接所有東西 - 但聲音仍然以不同的速度記錄。 呃。
繁瑣的搜索、故障排除和多年的奮鬥
我開始了一次可悲的故障排除嘗試。 看著很痛苦。 每次我把所有設備從櫃子裡拿出來,跪在桌面後面連接所有設備,嘗試捕捉視頻 - 卻再次發現沒有任何效果。
我在 2008 年偶然看到一篇論壇帖子,內容是關於安裝一些奇怪的未簽名的中文驅動程序……這是一個糟糕的主意,但我很絕望。 然而,他沒有幫忙。
我嘗試了不同的數字化程序。 買
我總是放棄,拔掉所有電源,並將設備藏在壁櫥裡幾個月。
投降並將磁帶交給專業人士
2018年已經到來。 我在四個不同的公寓周圍搬了錄像帶和大量設備,並準備從紐約搬到馬薩諸塞州。 我找不到再次接受它們的力量,因為我已經意識到我永遠無法獨自完成這個項目。
我問家人是否可以將磁帶捐贈給數字化公司。 幸運的是,沒有人反對——每個人都想再次看到這些記錄。
Я:但這意味著某些公司將可以訪問我們所有的家庭視頻。 它適合你嗎?
妹妹: 是的,我關心。 只有你一個人在擔心。 等等,所以你可以一開始就付錢給別人嗎?
Я: 呃呃…
所有 45 個磁帶的數字化成本為 750 美元。 它看起來很貴,但到那時我願意付出任何代價就不必再處理這些設備了。
當他們交出文件時,視頻質量肯定更好了。 在我的框架上,框架邊緣總是可以看到扭曲,但專家將所有內容數字化,沒有任何扭曲。 最重要的是,音頻和視頻完全同步。
這是一個視頻,比較了專業數字化和我自己的嘗試:
我媽媽拍攝我第一次編程嘗試的視頻中專業數字化和自製數字化的比較
步驟 2. 編輯
在家庭拍攝中,大約90%的材料是無聊的,8%是有趣的,2%是令人驚嘆的。 數字化之後,您還有很多工作要做。
在 Adobe Premiere 中編輯
在 VHS 錄像帶上,一長串視頻剪輯中散佈著空白部分。 要編輯磁帶,您必須確定每個剪輯的開始和結束位置。
對於編輯,我使用了 Adobe Premiere Elements,其終身許可費用不到 100 美元。 它最重要的特點是可擴展的時間線。 它可以讓您快速找到場景的邊緣,然後放大以找到剪輯開始或結束的確切視頻幀。
Adobe Premiere Elements 中的基本縮放時間軸
Premiere 的問題在於,該過程需要不斷的手動步驟,而且數字化和導出也需要很長時間。 這是我的操作順序:
- 打開包含 30-120 分鐘視頻的原始文件。
- 標記單個剪輯的邊界。
- 導出剪輯。
- 等待 2-15 分鐘導出完成。
- 重複步驟 2-4,直到膠帶用完。
漫長的等待意味著我不斷地在視頻編輯和其他任務之間來回切換,我的注意力來迴轉移了幾個小時。
另一個缺點是不可重複性。 修復一個小錯誤幾乎和從頭開始一樣困難。 當發布視頻時,我受到了很大的打擊。 直到那時我才意識到,為了在互聯網上進行流式傳輸,首先有必要將視頻導出為網絡瀏覽器本身支持的格式。 我面臨著一個選擇:重新啟動導出數百個剪輯的繁瑣過程,或者將導出的視頻重新編碼為另一種質量下降的格式。
編輯自動化
在花了很多時間進行手工工作之後,我想知道人工智能是否可以以某種方式應用到這裡。 確定剪輯的邊界似乎是機器學習的合適任務。 我知道準確度不會很完美,但讓他完成至少 80% 的工作,我會修復最後 20%。
我嘗試了一個名為
$ 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 導出每個剪輯。 如果我將元數據寫入電子表格並編寫自動導出視頻的腳本,編輯過程就會很快過去。
此外,電子表格極大地擴展了元數據的範圍。 最初,我將元數據填充到文件名中,但這限制了它們。 擁有完整的電子表格使我能夠對有關該剪輯的更多信息進行分類,例如其中的人物、錄製時間以及在視頻播放時我想要顯示的任何其他數據。
後來,我能夠使用此元數據向剪輯添加信息,例如我們的年齡以及剪輯中發生的情況的詳細描述。
電子表格功能允許您記錄元數據,從而提供有關剪輯的更多信息並使其更易於查看
自動化解決方案的成功
有了電子表格,我寫了
下面是它的實際效果:
到現在我已經花了 數百 幾個小時,在 Premiere 中繁瑣地選擇剪輯邊界,點擊導出,等待幾分鐘完成,然後重新開始。 不僅如此,當後來發現質量問題時,對同一剪輯重複了多次該過程。
當我自動化剪輯的切片部分時,巨大的重量從我的肩膀上掉了下來。 我不再需要擔心我會忘記元數據或選擇錯誤的輸出格式。 如果稍後出現錯誤,您只需調整腳本並重複所有操作即可。
Часть2
數字化和編輯視頻片段只是成功的一半。 我們仍然需要找到一個方便的選擇在互聯網上發布,以便所有親戚都可以像在 YouTube 上一樣通過流媒體以方便的格式觀看家庭視頻。
在文章的第二部分,我將詳細介紹如何建立一個包含所有視頻剪輯的開源媒體服務器,這每月只花費我 77 美分。
繼續,
Часть2
來源: www.habr.com