使用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