基於FFmpeg實現屏幕錄製

FFmpeg下載

首先需要下載FFmpeg,爲了在win7系統上通用和方便,我們採用32位的靜態版本,下載頁面如下:
軟件信息
下載地址:https://ffmpeg.zeranoe.com/builds/

錄製屏幕

爲了實現對於Window桌面錄製,有兩種方式進行採集:

  1. DirectShow 設備
  2. gdigrab設備

其基本命令行如下:

//Dshow設備
ffmpeg -f dshow -i video="screen-capture-recorder" output.mkv

//gdigrab設備 採集整個桌面
ffmpeg -f gdigrab -framerate 30 -i desktop output.mkv

這兩個命令默認都是採用x264 進行編碼,在本地CPU不是足夠高的情況下,錄製的視頻畫面根本看不清楚,這是因爲編碼效率太低導致;

爲了提高錄製效果,我們可以採用無損編碼+提高編碼速度方式進行錄製,具體命令如下:

ffmpeg -framerate 30 -f gdigrab -i desktop -c:v libx264rgb -crf 0 -preset ultrafast output.mkv
或者
ffmpeg -framerate 30 -f gdigrab -i desktop -c:v libx264rgb -preset:v ultrafast -tune:v zerolatency output.mkv

關於FFmpeg屏幕採集可以參考 https://trac.ffmpeg.org/wiki/Capture/Desktop文章
關於H264編碼方面的知識可以參考https://trac.ffmpeg.org/wiki/Encode/H.264文章

錄製聲音

在上面提到過錄制屏幕除了採用gdigrab外,還可以採用dshow方式;它們的區別就是:gdigrab設置僅支持截取屏幕信息,對聲音的錄製是不支持的,而show方式可以支持錄製屏幕和聲音

這個dshow軟件的下載信息如下:

  1. 編譯好的下載地址是:
    http://sourceforge.net/projects/screencapturer/

  2. 源碼地址是:
    https://github.com/rdp/screen-capture-recorder-to-video-windows-free

爲了使系統能識別出dshow設備,我們首先需要進行註冊,爲了去掉不必要的文件,我們只提取四個dll:

  • screen-capture-recorder.dll
  • screen-capture-recorder-x64.dll
  • audio_sniffer-x64.dll
  • audio_sniffer.dll

註冊命令行如下:

//註冊屏幕錄製設備(我們採用32位的ffmpeg,可以不用註冊帶x64的dll)
regsvr32 /s  screen-capture-recorder.dll
//註冊虛擬音頻設備
regsvr32 /s audio_sniffer.dll

註冊成功後,可以採用以下命令進行檢查是否註冊成功

ffmpeg -list_devices true -f dshow -i dummy  

系統輸出大致如下:
在這裏插入圖片描述
“screen-capture-recorder” 這個就是桌面捕獲設備,用於錄製屏幕
“virtual-audio-capturer” 這個是音頻捕獲設備,用於錄製聲音

-f dshow -i audio="virtual-audio-capturer" 這代表聲音從“virtual-audio-capturer”音頻設備獲取

爲了能夠同時錄製聲音和畫面,我們可以使用以下命令進行採集:

ffmpeg -framerate 30 -f gdigrab -i desktop -f dshow -i audio="virtual-audio-capturer" -c:v libx264rgb -preset:v ultrafast -tune:v zerolatency output.mp4

用vlc打開錄製文件,可以看書畫面顯示正常以及聲音正常被播放處理,截圖如下:
在這裏插入圖片描述

以上就是關於ffmpeg錄製window桌面的全部過程了,歡迎大家交流~

參考文章:
https://blog.csdn.net/Fandes_F/article/details/105121581

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