【原創】FFMPEG錄屏入門指南

2022-09-20 12:00:10
  1. 下載ffmpeg
  • 點選 ffmpeg官網,選擇windows,然後點選Windows builds from gyan.dev

  • 也可以直接點選 https://www.gyan.dev/ffmpeg/builds/ ,在點選ffmpeg-git-full.7z,即可下載:

  • 下載到的檔案格式為7z(一種壓縮格式),用電腦安裝的壓縮工具解壓即可。如果沒有安裝支援7z的壓縮工具,可以點選https://www.7-zip.org/,下載:

    下載完,雙擊開啟,一路同意下一步直到完成即可。

  • 解壓後剪下至自己習慣放軟體的資料夾下即可:

    我把它放在了D:\opt\ffmpeg\然後記住這個路徑D:\opt\ffmpeg\bin,後面的錄屏命令用的到

  • 選做:將D:\opt\ffmpeg\bin新增到系統環境變數。目的是不用記住上一步的這個路徑D:\opt\ffmpeg\bin,就可以用ffmpeg。具體方法請自行百度。

至此,ffmpeg就安裝完了。

按下Windows+R鍵,輸入cmd,回車,開啟命令提示字元視窗:

依次輸入以下命令

# 跳轉至ffmpeg程式所在路徑,設定了ffmpeg環境變數的可以略過
d:
cd /opt/ffmpeg/bin/
# 上面的碟符`d:`和路徑`/opt/ffmpeg/bin/` 要根據你ffmpeg的安裝路徑靈活修改!

  1. 檢視輸入裝置
    輸入:ffmpeg -list_devices true -f dshow -i dummy,檢視可用裝置的清單(每臺電腦的請結果都不太一樣,但是相似,可以根據我下面的結果甄別自己電腦的裝置):
  • 我這次錄屏,需要錄製電腦畫面和麥克風的聲音,於是用到了上面結果中的麥克風陣列 (Realtek(R) Audio) 裝置,注意是這一部分,不包含引號:

電腦畫面改選哪個呢?有兩種方案:

  • 安裝Screen Capturer Recorder然後選擇上面的裝置清單中的screen-capture-recorder(見上圖;安裝好後再執行檢視裝置的命令才會出現)。
  • 直接使用ffmpeg內建的gdigrab
    第一種我操作失敗了,所以我選用第二種。現在我需要記住的的是音訊輸入裝置名稱麥克風陣列 (Realtek(R) Audio)
  1. 檢視可用編碼器

輸入ffmpeg -encoders |findstr "hevc 265" ,檢視可用的編碼器。我的電腦支援這些:

該選擇哪一個呢?

  • 首先libx265是通用的,選這個最保守,但是它再不做優化的情況下是靠cpu運算。簡單理解,一旦開啟錄屏,你的電腦cpu使用率會飆升,甚至造成電腦卡頓。嘗試一下,如果沒有造成卡頓,就可以計需用這個編碼器了。
  • 如果電腦設定有限,或者有獨立顯示卡的話,咱們可以挑一個獨顯支援的編碼器。我的電腦是NVIDIA的獨顯,所以我選擇與之對應的hevc_nvenc編碼器。
    你該怎麼找到適合的呢?首先知道自己的電腦有沒有獨顯,獨顯是Intel的,還是NVIDIA的,還是AMD的,然後從關鍵詞裡面找對應的就行。拿我的清單舉例:如果是AMD的,就選hevc_amf,如果是Intel的,就選hevc_qsv。 或者乾脆挨個嘗試一下,反正又不多。
    怎麼判斷錄屏是否用到了獨顯呢?咱們再下一步的時候介紹。現在我要記住適合我的編碼器hevc_nvenc
  1. 錄屏

通過上面兩步,我記住了我的音訊輸入裝置是麥克風陣列 (Realtek(R) Audio),編碼器是hevc_nvenc。下面在命令提示字元視窗輸入我的錄屏命令

ffmpeg -f dshow -i audio="麥克風陣列 (Realtek(R) Audio)"  -f gdigrab -i desktop  -c:v hevc_nvenc -r 8 -b 0.6M -minrate 0.4M -maxrate 2M -bufsize 4M -y D:\Personal\Desktop\錄屏%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.mp4
  • 其中-f dshow -i audio="麥克風陣列 (Realtek(R) Audio)" 是指定採集的音訊裝置,你可以將麥克風陣列 (Realtek(R) Audio) 換成你想要採集的音訊輸入裝置。

  • 其中-f gdigrab -i desktop 是指定採集的視訊裝置,含義為採集電腦螢幕畫面。

  • 其中-c:v hevc_nvenc 是指定視訊編碼器,你可以將hevc_nvenc 換成適合你的編碼器。如果實在不知道該選哪個,就用libx265,如果用這個電腦錄屏會卡,就用libx264。還卡?就放棄吧。

  • 如果開始錄屏後,cpu飆升,說明使用的cpu進行編碼運算:

  • 如果是GPU生生明顯,cpu上升不明顯,則說明編碼器再用獨顯計算:

  • 其中-r 8是指定視訊的影格率。影格率是什麼,可自行百度。簡單說,這個值越高,視訊就會越流暢,但是錄屏後的視訊檔越大(其他引數不變的情況下);反之,視訊就會越跳躍,極端情況下會變成ppt的效果,但是視訊檔的體積會越小。對於錄屏來說,建議設定在5--30之間,通過多次嘗試,找到自己滿意的數值

  • 其中-b 0.6M -minrate 0.4M -maxrate 2M -bufsize 4M 是設定視訊的位元率,就是每秒會產生多大的體積。0.6M就是每秒會佔600kbp,簡單說就是一秒的視訊體積是600➗8也就是不到100K。-b後面跟的是基準位元率,-minrate是最小位元率 -maxrate是最大位元率。位元率不能過低,雖然會降低檔案體積,但是過低會導致畫面的清晰度慘不忍睹!過高也沒有意義,因為畫面的效果還收其他引數的影響,比如解析度、影格率等等。推薦的最小值是-b 0.6M -minrate 0.4M -maxrate 2M -bufsize 4M ,最大值是-b 2M -minrate 1M -maxrate 4M -bufsize 8M

  • 其中D:\Personal\Desktop\錄屏%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.mp4 是錄屏檔案儲存位置和名稱。可根據自己的需要修改。

  1. 調優
  • ffmpeg關於音視訊的引數非常多,本文僅僅是入門用,想是解析度,音視訊質量,音訊編碼,等等一系列引數並沒有完全列出來。未指定的引數,ffmpeg會使用預設引數,如解析度,會使用螢幕的解析度。
  • 對與影格率-r,位元速率-b,解析度等引數,可以在多次嘗試中找到檔案體積和錄製效果間的一個權衡。這裡給出一個參考:通常H265編碼下,1080p的視訊大小應該在300M到1.5G之間,我按照上手引數錄製的視訊在400M左右。
  • 找到適合自己的引數後,可以將其儲存為bat批次檔,以後雙擊該檔案,就可以一鍵錄屏了!下面給出我的以作參考:
D:
/opt/ffmpeg/bin/ffmpeg.exe -f dshow -i audio="麥克風陣列 (Realtek(R) Audio)"  -f gdigrab -i desktop  -c:v hevc_nvenc  -r 8 -b 0.6M -minrate 0.4M -maxrate 2M -bufsize 4M -y D:\Personal\Desktop\錄屏%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.mp4

注意:儲存後的bat檔案編碼得是windows預設的GBK,如果是UTF-8會導致執行失敗!

最後,如有交代不清的,或者錯誤之處,歡迎交流指正!