天天看點

ffmpeg錄屏

使用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 強制輸入或輸出檔案格式。通常會自動檢測輸入檔案的格式,并根據輸出檔案的檔案擴充名猜測格式,是以在大多數情況下不需要此選項。
      

常用操作

  1. 抓取整個螢幕儲存圖檔
ffmpeg -f gdigrab -i desktop test.png
      
  1. 截屏指定區域
//調整截圖區域需要在輸入-i之前
ffmpeg -f gdigrab -s 500x500 -offset_x 100 -offset_y 100 -i desktop   -frames:v 1 test.png
      
  1. 截屏指定視窗
//通過title指定視窗标題
//輸出為jpg,若為png将存在透明視窗的問題
ffmpeg -f gdigrab -i title="Windows 7sp1 x64_677408 - VMware Workstation"   -frames:v 1 test.jpg
      
  1. 截屏指定視窗指定區域
ffmpeg -f gdigrab  -s 500x500 -offset_x 100 -offset_y 100  -i title="Windows 7sp1 x64_677408 - VMware Workstation"   -frames:v 1 test.jpg
      
  1. 錄制螢幕為視訊檔案
ffmpeg.exe -r 1 -f gdigrab  -i desktop -vcodec libx264  a.mp4
      
  1. 錄制螢幕指定區域
ffmpeg.exe -r 1 -f gdigrab -s 500x500 -offset_x 100 -offset_y 100  -i desktop -vcodec libx264  a.mp4
      
  1. 錄制螢幕為直播流
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