8.15.2012

在 Windows 用 ffmpeg 錄桌面

比較新版本的 ffmpeg 支援 dshow input,在 Windows 下能直接使用 DirectShow 相容的裝置 (webcam, mic) 當輸入源,

ffmpeg -f dshow -list_devices true -i dummy

會列出所有它能認出的 dshow devices。接著安裝虛擬的 dshow 裝置,視需求安裝,
如果要擷取整台電腦的音源(想錄一般麥克風、或是列出的名稱是亂碼的音源裝置),第二項是必須要裝的。注意要用這兩個 virtual device 需要 32bit 的 ffmpeg

ffmpeg -rtbufsize 512000k -f dshow -i video=screen-capture-recorder:audio=virtual-audio-capturer
       -vcodec libx264 -preset fast -tune stillimage -x264opts crf=26
       -acodec libvorbis -aq 3
        screencast.mkv

這樣會將現在看到的桌面與任何動作以 x264 壓縮到 screencast.mkv 這個影片中,就算是在被遠端桌面的狀況下,也能正常錄製;當下桌面的解析度就會是影片壓製的解析度。

最近版本這樣壓出來的影片會是 4:4:4 的,若要丟到 Youtube 上,必須是 yuv420p,所以要指定,

ffmpeg -rtbufsize 512000k -f dshow -i video=screen-capture-recorder:audio=virtual-audio-capturer
       -vcodec libx264 -preset fast -tune stillimage -x264opts crf=26
       -acodec libvorbis -aq 3
       -pix_fmt yuv420p
       -sws_flags lanczos
       -vf crop=1440:810:0:0,scale=1280:720
        screencast.mkv

假設你的螢幕解析度是 1440x900,為了上傳 youtube 方便,想弄成 720p 的 16:9,可以先 crop 成 16:9 的 1440x810,然後再 scale 成 1280x720,如上的綠字部份。像是這個測試就是從 1024x640 crop and scale to 1280x720。

如果要流暢一點,還能指定 input 的 framerate (defaults to 25fps),詳細請看 ffmpeg 的 man pages。

記得,如果是在 mac 下…



可以直接用 QuickTime Player 錄桌面!

沒有留言: