愛湃森視頻教程製作方法

愛湃森視頻教程製作方法

來自專欄 Python之美

本文首發於:愛湃森視頻教程製作方法

我的視頻製作方法參考了 寧皓網視頻教程製作方法,首先感謝寧浩分享了寧皓網的經驗。這篇文章距離現在已經3年,而且其中對硬體和軟體的作用說的也不夠細,在這裡也把我的一些視頻製作的理解和經驗分享出來。本來想建個別的專欄放這些非Python相關的文章,但由於最近我【違規】了,只能放到這裡。

文章的首圖就是我錄製視頻的桌面了。

必要的硬體

  1. 電腦。Macbook Pro(2013)和Macbook Pro(2017)。早期我是用Macbook和iPad來做的,但舊Macbook配置比較低,轉碼和加水印等操作太耗費時間,而且在執行過程中卡的根本不能做其他的事情,所以買了台新的Macbook。
  2. 麥克風。麥克風主要分2種:動圈麥克風和電容麥克風,電容的要更靈敏,所以能收集到更多的聲音細節。當然錄音的環境情況也要考慮,我住在北京一所很普通的住宅樓,錄音是在一個小房間,噪音以及屋內的一些混響等聲音細節都會被錄製進來,所以在後期聲音處理時就要把他們去除。另外一個要注意的是麥克風的指向,主要有三種類型,麥克風我選了 森海塞爾 MK4,他是心型指向的,所以要在麥克風的前端發音效果最好,其他方向的聲音會衰減。
  3. 防震架。我用的和麥克風是配套的,森海塞爾 MKS4。其實防震架我買的比較後悔,因為他是用來降低外部震動對錄音的影響的,對我這種麥克風完全固定的方式,防震架意義不大。
  4. 支架。選擇你喜歡的效果就行,我用的是「Neewer NB-35」,這個支架很重,轉運費是按重量計的,所以最後它是很貴的,現在覺得其實國內買也沒什麼關係。
  5. USB 音效卡。麥克風采集到的聲音需要通過音效卡轉換成軟體能夠理解的數字信號。音效卡我之前沒有了解過,所以在美亞上看用戶評價決定的,而且也考慮了對OS X的支持性,最後選擇了Steinberg UR242。另外要注意2點:1. 選擇音效卡時要注意選擇那種內置支持48V的幻象供電;2. 如果是自己美亞購買,記得看音效卡描述裡面送不送卡儂口的介麵線(也就是話筒線),如果不送的話記得獨立購買,比如我選的這個音效卡就需要自己買。
  6. 防噴罩。防噴罩放置在講者與麥克風之間,減弱一些發「p」,「h」等聲音產生的噴麥聲。因為這種聲音後期比較難消除。
  7. 監聽耳機。監聽耳機是沒有加過音色渲染(音染)的耳機,通過監聽耳機,能夠聽到最為接近真實的、未加任何修飾的音質。我選的是非常有名的Audio-Technica ATH-M20x。

上面說的硬體都是從美亞買的,除了電腦,其他的硬體花費了 $630 + ¥400多的轉運費。

如果不熟悉可以淘寶買,我比較喜歡折騰,一方面可以在過程中對這些硬體更了解,學到一些知識,一方面也可以省1k+的RMB。

必須的軟體

  1. 錄屏幕:Screenflow。我是去年開第三場知乎Live時買的 Screenflow 6,現在已經是Screenflow 7了,6到7是付費升級,我暫時覺得Screenflow 6足夠用,所以先不升級了。
  2. 聲音編輯:Adobe Audition CC。主要用來降噪、匹配響度、標準化等。
  3. 視頻轉碼和水印:FFmpeg。

錄製準備

我嘗試過2種錄製方式:

  1. 先錄視頻,看著視頻再錄一遍聲音,最後把它們拼起來剪輯到一起。這樣做的優點是錄音時的效果很好,因為只關注要說的話就可以了,之後再整理觀點時說法更成熟。缺點一是最耗時,缺點二是在由於聲音和視頻時分開錄的,會有一些實操時的想法後來錄音時忘記了或者找不到當時那個最好的點了。
  2. 視頻和聲音一起錄,也就是現在我選擇的方案。這個方式也分2個階段,早期我對自己特別自信,就是列一個本節課程的大綱,只是打個草稿,有點像知乎Live的角度,想現場發揮。但是錄製課程這樣就不行了,因為同時說話和操作很容易忘記接下來該說什麼,然後就卡殼了... 所以現在這個階段我會事先準備本節課程要講的內容、操作記錄等,把它們存進專門的課程私有項目中對應的md文件中,錄製時由於內容寫的差不多了,思路非常清晰,要講什麼,下一步說什麼很清楚了。但是這樣做缺點也很明顯,就是有點像讀稿子,課程早期我這種生硬的感覺會明顯很多,隨著課程的繼續,漸漸的我就可以控制說話的語氣和聲調了。我的優勢還是直接錄寫代碼的部分,聲音相對自然的多。另外一個視頻和聲音一起錄製的問題是容易誤操作,也就是腦子和嘴不能跟上,平時寫代碼不說話,非常專註,所以不會出現寫錯單詞之類的低級問題,但是錄製課程時候由於精力集中在講課就很容易手口不一。這方面經驗我要加強。

視頻剪輯

我希望課程精簡,所以會剪輯掉一些耗時的操作過程,比如下載一個軟體,文件比較大,需要3分鐘,在視頻中,會保留這個過程中的一些節點,比如10%,40%,90%,100%,讓這個過程不突兀的在3秒鐘完成了。所以有同學感嘆我家網速咋這麼快。另外一個例子就是安裝軟體或者系統,我也會把整體的安裝過程縮減到幾秒完成。

最近一段時間可能是空氣問題,我總是會小咳,錄音時候很煩,說著說著忍不住就要咳一下,這個時候就需要調整心態,然後把這一部分重錄。注意是重錄而不是靠後期處理,因為後期處理很浪費時間成本很高,而且有些效果非常難處理。所以我現在都會直接把這部分隔開幾秒,重新說一次,然後繼續。這樣在剪輯的時候直接把有問題的那部分剪掉就完了。

Screenflow非常強大,值得好好研究下,尤其要善用快捷鍵,編輯視頻時有大量的修修剪剪,不用快捷鍵的話效率非常低的。

不要輕易用Nest Clips,因為沒有必要,還會造成後期展開再修改就會很麻煩。

看一下我的視頻剪輯之後的效果:

這只是一個十幾分鐘的視頻,可以想像一個視頻1個半小時,會有多麼密密麻麻。

另外是善用Freeze Frame填充那些有問題的視頻畫面,或者後期在某個位置補充一些錄音。

聲音處理

我也是用Screenflow錄製聲音,當視頻剪輯結束後第一步是先從Screenflow導出無損格式的聲音(Lossless - Audio Only),然後導入Adobe Audition CC。

Adobe Audition CC是一個非常好的產品。我主要用它做三件事:

  1. 標準化。在「收藏夾」菜單里,選擇「標準化為 -0.1db」,標準化就是調整振幅,-0.1db表示調整到最大,這樣可以提高音量。
  2. 除雜訊。這裡注意,按 shift + command + P 後,要注意你想去噪的是局部還是整體,如果想對整個錄音應用這個雜訊樣本,記得選擇「選擇完整文件」這一項。
  3. 增幅。這個我用的不多,主要是有時候一個視頻其實是多次錄製的,環境、人聲、麥克風的位置(有時候不小心挪動過),甚至有1次一直到錄完才發現用的不是外置音效卡而是Mac的內置的麥克風。大部分聲音大小差別不大,但有幾次情況我只能對這部分聲音增幅,可以局部的提高音量。但是要注意,增幅影響的是所有聲音因素,比如敲擊鍵盤、觸摸板操作等聲音都會因此變大,所以需要適度。

視頻轉碼/水印

我會首先導出一個Apple的Prores 422格式的視頻文件,這個格式具有出色的平衡畫質和剪輯效率。生成的文件很大,比如《Python入門》最後一節時長90分鐘,1920x1200解析度的文件是98G。

小鵝通會強制要求上傳文件的大小,當然我們也不可能直接把這樣的一個mov文件直接放到網站上,所以需要壓縮轉碼成一個適合的效果。

我使用了FFmpeg來做這件事,命令如下:

ffmpeg -i ~/Desktop/安裝MySQL和驅動.mov -pix_fmt yuv420p -vcodec h264 -acodec aac -preset veryslow -crf 18 -strict -2 安裝MySQL和驅動.mp4

-preset指定的編碼速度越慢,獲得的壓縮率就越高,但是為什麼不指定一個更慢的呢?preset類型很多,可以看 Choose a preset and tune。這些類型是收益遞減的,我用veryslow就是為了達到更好的視頻質量,但是耗時很久。

在優先保證畫面質量(也不太在乎轉碼時間)的情況下,使用-crf 參數來控制轉碼是比較適宜的。這個參數的取值範圍為 0~51,其中0為無損模式,數值越大,畫質越差,生成的文件卻越小。一般 18~28 是一個合理的範圍。18被認為是視覺無損的(從技術角度上看當然還是有損的),它的輸出視頻質量和輸入視頻相當。

-pix_fmt yuv420p 是為了支持Quick time播放器, 否則轉碼後的視頻和Quick time不兼容。

通常視頻剪輯中我就會加入水印,如果不小心忘記了,也可以使用FFmpeg加水印:

ffmpeg -i sqlalchemy.mp4 -i watermark.png -pix_fmt yuv420p -preset veryslow -crf 18 -filter_complex "overlay=W-w-5:H-h-5" "51. 用MySQL中的數據生成Excel表格.mp4"

這種FFmpeg加水印的執行時間耗時也非常久,所以還是盡量在導出視頻前加上吧。

總結

未來應該還會有新的經驗和理解,到時候還會分享。希望這篇文章能給做視頻的同行一些幫助


推薦閱讀:

【Python3網路爬蟲開發實戰】1.9.1-Docker的安裝
3.1 數據清洗:缺失值、異常值和重複值的處理-2代碼實操
VisPy 中文文檔:基礎內容
Python 數據分析(一):常見數據結構的使用
20個幫助你真正提升編程水平的網站

TAG:視頻教程 | Python | Python入門 |