FFmpeg —— 屏幕錄像和錄音並推流(命令行的方式)

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實現錄屏、直播推流、音頻視頻格式轉換、剪裁等功能 

FFMPEG在Windows下的屏幕錄像錄音 

使用FFmpeg進行屏幕錄像和錄音 

http://trac.ffmpeg.org/wiki/Capture/Desktop

http://ffmpeg.org/ffmpeg.html#Video-and-Audio-grabbing 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章