FFmpeg

簡介與其他資料:
 http://www.mobile01.com/topicdetail.php?f=510&t=3734550

其他範例:
  http://www.mobile01.com/topicdetail.php?f=510&t=4487462


參考資料

FFmpeg 官方資料:
  https://trac.ffmpeg.org/wiki/Capture/Desktop


從輸入設備擷取

首先,列出可用的輸入設備:
ffmpeg -hide_banner -list_devices true -f dshow -i dummy

假設輸入訊息如下:
c:\>ffmpeg -hide_banner -list_devices true -f dshow -i dummy
[dshow @ 03ACF580] DirectShow video devices
[dshow @ 03ACF580] "Integrated Camera"
[dshow @ 03ACF580] "screen-capture-recorder"
[dshow @ 03ACF580] DirectShow audio devices
[dshow @ 03ACF580] "Internal Microphone (Conexant 2"
[dshow @ 03ACF580] "virtual-audio-capturer"
dummy: Immediate exit requested

(實際上還會列出可用設備的別名 (Alternative name) 在這邊被省略。)

從上面的輸出訊息可以得知,視訊攝影機的名稱是 "UScreenCapture",麥克風的名稱是 "Internal Microphone (Conexant 2"。若要擷取視訊攝影機與麥克風擷取訊號可以使用以下命令。

從視訊攝影機與麥克風擷取訊號:
ffmpeg -f dshow -i video="Integrated Camera":audio="Internal Microphone (Conexant 2" capture.mkv
或:
ffmpeg -f dshow -i video="Integrated Camera" -f dshow -i audio="Internal Microphone (Conexant 2" capture.mkv


螢幕錄影 (Windows)

如果要在 Windows 系統下使用 FFmpeg 做螢幕錄影,則必須要安裝 Screen Capturer Recorder。

Screen Capturer Recorder 安裝檔下載:
  http://sourceforge.net/projects/screencapturer/files/

安裝 Screen Capturer Recorder 之後,使用下列命令列出可用的輸入設備:
ffmpeg -hide_banner -list_devices true -f dshow -i dummy

如果設備名單內有 "screen-capture-recorder" 與 "virtual-audio-capturer",
就可以使用使用 FFmpeg 做螢幕錄影。

螢幕錄影:
ffmpeg -f dshow -i video="screen-capture-recorder" capture.mkv

如果也需要錄製音訊:
ffmpeg -f dshow -i video="screen-capture-recorder":audio="virtual-audio-capturer" capture.mkv

如果也需要錄製麥克風音訊:
ffmpeg ^
-f dshow -i video=^"screen-capture-recorder^" ^
-f dshow -i audio=^"virtual-audio-capturer^" ^
-f dshow -i audio=^"Internal Microphone^" ^
-filter_complex ^"[1:a][2:a]amerge='inputs=2'[aout]^" ^
-map 0:v -map ^"[aout]^" -ac 2 ^
capture.mkv


一般說明

如果你的電腦性能不足,那麼將不能同時抓取並編碼影片,因為 CPU 速度太慢而不能做到這點。
在這種情況下,你可以用極低的編碼參數錄製輸出或是錄製為無壓縮格式。

而使用較高的編碼參數設定,可以增加壓縮率,也就是降低達到達到某一品質所需的位元率,但非常消耗 CPU 與 RAM 資源,所以錄製時建議使用很低的編碼參數設定。或者,如果是 Intel HD Graphics 或 NVIDIA 顯示卡使用者,可嘗試使用 h264_qsv 或 nvenc 編碼器。

錄製極高品質影片:
ffmpeg -f dshow -i video="screen-capture-recorder":audio="virtual-audio-capturer" -c:v libx264 -crf:v 0 -preset:v ultrafast capture.mkv

使用 "-crf:v 0" 將會得到極高品質的影像,但由於使用 "-preset:v ultrafast" 錄製出來的檔案非常巨大。之後你可以將以上的錄製出來的檔案給其它影音工具處裡,或是再使用 FFmpeg 轉換為所需的影片格式/規格。

如果只是需要縮小檔案的話,可以參考以下命再重新編碼輸出更小的新檔案。

低損失 - 高品質:
ffmpeg -i capture.mkv -c:v libx264 -crf:v 18 -refs 4 -preset:v slower -c:a libfdk_aac -vbr:a 4 output.mkv

以上命令將會輸出更小的檔案,但畫質損失肉眼難以察覺。


無損編碼

如果你想要綠製無損影片可以使用 x264 編碼器並使用 qp 0 控制輸出流量與品質(無損)。

錄製無損影片:
ffmpeg -f dshow -i video="screen-capture-recorder":audio="virtual-audio-capturer" -c:v libx264 -qp:v 0 -preset:v ultrafast capture.mkv

使用 "-qp:v 0" 將會得到最高品質(無損)的影像,但由於使用 "-preset:v ultrafast" 錄製出來的檔案非常巨大。之後你可以將以上的錄製出來的檔案給其它影音工具處裡,或是再使用 FFmpeg 轉換為所需的影片格式/規格。

如果只是需要縮小檔案的話,可以參考以下命再重新編碼輸出更小的新檔案。

無損 - 最高品質:
ffmpeg -i capture.mkv -c:v libx264 -qp:v 0 -refs 4 -preset:v slower -c:a flac output.mkv

以上命令將會輸出更小的檔案,但不會損失畫質。

低損失 - 高品質:
ffmpeg -i capture.mkv -c:v libx264 -crf:v 18 -refs 4 -preset:v slower -c:a libfdk_aac -vbr:a 4 output.mkv

以上命令將會輸出更小的檔案,但畫質損失肉眼難以察覺。
文章關鍵字
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!