使用gdigrab錄制螢幕
// gdigrab 錄屏
//-s 1920x1080 錄制的螢幕寬度、高度
//- offset_x 100 偏移
// - offset_y 200 偏移
// 需要注意寬度、高度分别加上偏移以後不能超出螢幕
//例如 - s 1920x1080 - offset_x 100 - offset_y 200
//會有以下報錯
//Capture area(10, 20),(1930, 1100) extends outside window area(0,-1440),(2560, 1080)desktop: I / O error
// - i desktop 錄制螢幕
//-thread_queue_size 此選項設定從檔案或裝置讀取時排隊資料包的最大數量。低延遲 / 高速率的直播流,如果不及時讀取資料包可能會被丢棄;設定此值可以強制 ffmpeg 使用單獨的輸入線程并在資料包到達時立即讀取資料包。預設情況下,ffmpeg 僅在指定了多個輸入時才執行此操作。
//-r 幀率
//libx264 使用 libx264 編碼所有視訊流并複制所有音頻流。
//-acodec 設定音頻編解碼器,copy: 所選流的資料包應從輸入檔案傳送并在輸出檔案中混合
//- f 強制輸入或輸出檔案格式。通常會自動檢測輸入檔案的格式,并根據輸出檔案的檔案擴充名猜測格式,是以在大多數情況下不需要此選項。
常用操作
- 抓取整個螢幕儲存圖檔
ffmpeg -f gdigrab -i desktop test.png
- 截屏指定區域
//調整截圖區域需要在輸入-i之前
ffmpeg -f gdigrab -s 500x500 -offset_x 100 -offset_y 100 -i desktop -frames:v 1 test.png
- 截屏指定視窗
//通過title指定視窗标題
//輸出為jpg,若為png将存在透明視窗的問題
ffmpeg -f gdigrab -i title="Windows 7sp1 x64_677408 - VMware Workstation" -frames:v 1 test.jpg
- 截屏指定視窗指定區域
ffmpeg -f gdigrab -s 500x500 -offset_x 100 -offset_y 100 -i title="Windows 7sp1 x64_677408 - VMware Workstation" -frames:v 1 test.jpg
- 錄制螢幕為視訊檔案
ffmpeg.exe -r 1 -f gdigrab -i desktop -vcodec libx264 a.mp4
- 錄制螢幕指定區域
ffmpeg.exe -r 1 -f gdigrab -s 500x500 -offset_x 100 -offset_y 100 -i desktop -vcodec libx264 a.mp4
- 錄制螢幕為直播流
ffmpeg -thread_queue_size 1000 -r 30 -f gdigrab -s 1820x880 -offset_x 100 -offset_y 200 -i desktop -vcodec libx264 -acodec copy -preset:v ultrafast -tune:v zerolatency -max_delay 10 -g 50 -sc_threshold 0 -f flv rtmp://xxxxxx