Windows
方法一:dshow
首先需要安裝一個軟件,screen capture recorder
編譯好的下載地址是:
http://sourceforge.net/projects/screencapturer/files/ 安裝後才能使用
源碼地址是:
https://github.com/rdp/screen-capture-recorder-to-video-windows-free
查看可用的設備:
ffmpeg -list_devices true -f dshow -i dummy
[dshow @ 000001d73b78b400] DirectShow video devices
[dshow @ 000001d73b78b400] "screen-capture-recorder"
[dshow @ 000001d73b78b400] DirectShow audio devices
[dshow @ 000001d73b78b400] "virtual-audio-capturer"
ffmpeg已經可以捕獲到DirectShow視頻設備,和音頻設備了.
"screen-capture-recorder" 這個就是桌面捕獲設備,如果電腦上連有攝像頭,也會列出來.
"virtual-audio-capturer" 這個是音頻捕獲設備
捕獲視頻:
讀取屏幕數據並編碼爲H.264,最後保存成desktop.mkv
ffmpeg -f dshow -i video="screen-capture-recorder" -vcodec libx264 -preset ultrafast desktop.mkv
捕獲聲音:
ffmpeg -f dshow -i audio="virtual-audio-capturer" -acodec aac desktop.aac
同時捕獲桌面和聲音並錄製成flv格式:
ffmpeg -f dshow -i video="screen-capture-recorder" -f dshow -i audio="virtual-audio-capturer" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -pix_fmt yuv420p -acodec aac desktop.flv
如果想提高x264編碼速度可使用 -preset:v ultrafast -tune:v zerolatency 兩個參數。
1)如果不設置ultrafast,捕獲的視頻比較模糊。
2)如果不設置-pix_fmt yuv420p,捕獲的是黑白圖像
3)如果不設置-pix_fmt yuv420p,封裝格式改爲mp4的話,捕獲的也是彩色圖像。
捕獲桌面音視頻並推流
ffmpeg -f dshow -i video="screen-capture-recorder" -f dshow -i audio="virtual-audio-capturer" -vcodec libx264 -preset:v ultrafast -pix_fmt yuv420p -acodec aac -f flv rtmp://172.17.178.120/myapp/test
推流服務器的搭建可以參考這邊文章:centos7+nginx+rtmp+ffmpeg搭建流媒體服務器
方法二:gdigrab
gdigrab是基於GDI的抓屏設備,可以用於抓取屏幕的特定區域。在這裏記錄一下gdigrab的用法。
gdigrab通過設定不同的輸入URL,支持兩種方式的屏幕抓取:
(1)“desktop”:抓取整張桌面。或者抓取桌面中的一個特定的區域。
(2)“title={窗口名稱}”:抓取屏幕中特定的一個窗口。
下面舉幾個例子。
最簡單的抓屏:
ffmpeg -f gdigrab -i desktop out.mpg
從屏幕的(10,20)點處開始,抓取640x480的屏幕,設定幀率爲5
ffmpeg -f gdigrab -framerate 5 -offset_x 10 -offset_y 20 -video_size 640x480 -i desktop out.mpg
linux
使用x11grab
ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0+100,200 v-out.mp4
上面的參數,指的是從屏幕的左上角(x=100, y=200)的位置,錄製分辨率爲1024×768的視頻。
可以使用ALSA同時錄製聲音
ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0+100,200 -f alsa -ac 2 -i hw:0 av-out.mkv
也可以使用Pulse聲音輸入設備
ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0+100,200 -f pulse -ac 2 -i default av-out.mkv
問題總結
捕獲圖像不清晰。
解決辦法:
添加參數:-preset ultrafast
參考
FFmpeg獲取DirectShow設備數據(攝像頭,錄屏)
利用FFmpeg實現錄屏、直播推流、音頻視頻格式轉換、剪裁等功能