FFmpeg Screen Recorder是筆者開發的一款開源小工具,可以在Linux上進行全螢幕或是視窗的錄影,也可以在錄影的同時錄下麥克風或是電腦播放的聲音。除此之外,FFmpeg Screen Recorder還支援了RTMP協定,可以即時地將目前電腦的畫面和聲音透過網路來直播。本篇文章也會提供使用FFmpeg Screen Recorder進行YouTube直播的方法哦!



安裝FFmpeg Screen Recorder

如果系統環境中有安裝「Cargo」的話,可以直接使用以下指令來下載「FFmpeg Screen Recorder」的原始碼專案,並進行編譯安裝。

cargo install ffmpeg-screen-recorder

或是直接到以下頁面取得「FFmpeg Screen Recorder」的執行檔,手動放置到「/usr/local/bin」目錄中即可。網址如下:

https://github.com/magiclen/FFmpeg-Screen-Recorder/releases

Linux的額外設定

現階段的FFmpeg Screen Recorder只能支援X11(X Window System),不支援Wayland。如果您正在使用Wayland,請先替換成X11。

另外,FFmpeg Screen Recorder必須要搭配FFmpeg執行檔來使用,這個FFmpeg執行檔也必須要啟用libxcb、libfdk-aac和libx264函式庫,一般來說,Linux發行版所提供的軟體來源中的FFmpeg,已經有啟用libxcb、libfdk-aac和libx264函式庫了,因此可以直接使用官方軟體源中的FFmpeg。或者也可以到以下頁面取得FFmpeg的執行檔,手動放置到「/usr/local/bin」目錄中。網址如下:

https://github.com/magiclen/FFmpeg-For-MagicLen-Applications/releases

接著,如果您的音效卡或音效卡的軟體並不能直接設定錄音來源的話,可以使用「PulseAudio Volume Control」這款軟體來切換。基於Debian的Linux發行版可以直接使用以下指令來安裝:

sudo apt install pavucontrol

RedHat系的Linux發行版可以使用以下指令來安裝:

sudo dnf install pavucontrol

使用FFmpeg Screen Recorder

FFmpeg Screen Recorder的用法十分簡單,直接在終端機下輸入「ffmpeg-screen-recorder」,即可開始進行全螢幕的無聲錄音。

ffmpeg-screen-recorder

ffmpeg-screen-recorder

在終端機下按下Ctrl + c即可停止錄製。

ffmpeg-screen-recorder

錄製的影片檔會使用MP4容器來儲存到目前的工作目錄下,檔名為錄製的時間。影片使用libx264(H.264)進行編碼,FPS為60,CRF為人類視覺上看起來無損的18,錄製出來的檔案不算太肥,可以長時間錄製,而且也保留了能夠後製、剪裁、再重新編碼的畫質。

ffmpeg-screen-recorder

如果要在錄影的同時也錄製聲音的話,可以加上「-a」選項。如下:

ffmpeg-screen-recorder -a

ffmpeg-screen-recorder

影片的聲音會使用libfdk-aac(AAC LC)進行編碼,採用變動位元率V5(約192kbps),取樣頻率為44100Hz。錄製環境音和人聲已經是十分足夠了!

如果想要指定影片檔案的儲存路徑,可以加上「-o」選項來設定。如下:

ffmpeg-screen-recorder -o /path/to/file.mp4

ffmpeg-screen-recorder

如果不想把整個螢幕都錄下來的話,可以加上「-w」選項,在錄影前先用滑鼠選定要錄製的視窗。如下:

ffmpeg-screen-recorder -w

ffmpeg-screen-recorder

另外,如果有特殊需求,想讓影片保留螢幕或視窗畫面的原始尺寸,而不自動加上黑色背景填充成正規H.264 16:9影片的尺寸的話,可以加上「-n」選項。如下:

ffmpeg-screen-recorder -n

PulseAudio Volume Control的設定方式

PulseAudio Volume Control可以協助您切換錄音訊號的來源。如果想要讓FFmpeg Screen Recorder錄製電腦發出的聲音,可以先讓FFmpeg Screen Recorder開始錄音錄影,然後就可以在PulseAudio Volume Control的「Recording」(錄音)頁籤中,找到「Lavf」項目,這個就是FFmpeg Screen Recorder所使用的錄音程式。

ffmpeg-screen-recorder

預設的錄音來源可能會是「Built-in XXX」(內建的XXX),將其改成「Monitor of Built-in XXX」即可將來源從麥克風,切換成電腦發出的聲音。

ffmpeg-screen-recorder

YouTube 直播

前面有提到FFmpeg Screen Recorder支援RTMP協定,只要配合「-o」選項,將RTMP協定的網址當作檔案儲存的位置來傳入,即可將影音透過RTMP協定來傳輸。至於YouTube用來直播的RTMP連結,可以在登入YouTube後,於這個頁面取得:

https://www.youtube.com/live_dashboard

ffmpeg-screen-recorder

ffmpeg-screen-recorder

舉例來說,MagicLen頻道的串流金鑰為「z1z3-mqp3-7p4g-9mgt」,則其RTMP網址就為:

rtmp://a.rtmp.youtube.com/live2/z1z3-mqp3-7p4g-9mgt

只要將上面這串網址,帶進FFmpeg Screen Recorder的「-o」選項,即可開始直播。

ffmpeg-screen-recorder

ffmpeg-screen-recorder

使用RTMP時FFmpeg Screen Recorder會將錄製出來的影片之FPS改為30,CRF改為25,以減少資料量,降低網路頻寬的使用。