c 錄屏 FFmpeg錄屏 錄屏格式轉換

2021-08-04 03:02:39 字數 1841 閱讀 5334

需要對軟體的客戶區進行錄屏,但是找了半天資料發現並不好整合到我的軟體當中,最後發現利用cmd命令呼叫ffmpeg.exe可以實現錄屏功能,實現錄屏以及錄屏格式轉換,相當有趣。

ffmpeg有乙個專用於windows下螢幕錄製的裝置:gdigrab。gdigrab是基於gdi的抓屏裝置,可以抓取螢幕的特定區域。支援兩種方式的螢幕抓取:

(1)「desktop」:抓取整張桌面。或者抓取桌面中的乙個特定的區域。

(2)「title=」:抓取螢幕中特定的乙個視窗。(但是中文的視窗是不行的,會出現亂碼!)

從螢幕的(10,20)點處開始,抓取640x480的螢幕,設定幀率為5(幀率越大越流暢的,但是太大就沒什麼用了,浪費資源)。

ffmpeg -f gdigrab -framerate 5 -offset_x 10 -offset_y 20 -video_size 640x480 -i desktop out.mpg

請見我的另一篇文章。

string ifoutput = "..bin\\output.mpg";

fstream _file;

_file.open(ifoutput, ios::in);//判斷檔案是否存在

if (!_file)

else

point lppoint, lppoint1;

int w = lppoint1.x - lppoint.x;

char ww[10];

itoa(w, ww , 10);

int h = lppoint1.y - lppoint.y;

char hh[10];

itoa(h, hh, 10);

...

//由於我的軟體名字為中文,所以我獲取的是軟體在桌面的座標

char xx[10];

itoa(lppoint.x, xx, 10);

char yy[10];

itoa(lppoint.y, yy, 10);

string exe = "..\\bin\\ffmpeg.exe -f gdigrab -framerate 50 -offset_x ";

exe += xx;//獲取的左上角x

exe += " -offset_y ";

exe += yy;//獲取的左上角y

exe += " -video_size ";

exe += ww;

exe += "x";

exe += hh;

exe += " -i desktop ";

exe += output;

system(exe.c_str());//會出現控制台

轉換為mp4格式:

tchar szcommandline = text("..bin\\ffmpeg.exe -i ..bin\\output.mpg -vcodec libx264 -acodec aac ..bin\\output.mp4");

startupinfo si = ;

process_information pi;

si.wshowwindow = false;

si.dwflags = startf_useshowwindow;

bool ret = ::createprocess(null, szcommandline, null, null, false, 0, null, null, &si, &pi);

waitforsingleobject(pi.hprocess, infinite);//等待程序完成

如何免費錄屏?嗨格式錄屏大師更穩定

如何免費錄屏?追劇或看 電影時,想把精彩的畫面錄製下來 玩遊戲或者看直播時,想把精彩的操程式設計客棧作集錦錄製下來。上課或者 教程時,想要把實用的講解錄製下來。那麼我們如何才能免費的錄製這些 呢?跟著小編一起來看下吧。圖 如何免費錄屏 今天就給大家推薦兩中免費錄製 的方法,只要你有一台電腦,不僅可以...

什麼錄屏軟體好用?PC錄屏工具分享

什麼錄屏軟體好用?對於很多需要電腦錄屏的小夥伴來說,能夠找到乙個好用的錄屏軟體很重要。現在網上錄屏的方法有很多,不同的錄屏方法使用感之間有些差異。如果你也有電腦錄屏的需求,那下面分享的方法你需要知道!分享一 專業電腦錄屏軟體 如果需要錄製一些高質量的 建議使用 嗨格式錄屏大師 是一款適用於windo...

怎麼錄屏蘋果?錄屏蘋果電腦的方法

怎麼錄屏蘋果?目前有很多辦公族為了保證辦公的安全性和穩定性,都會選擇蘋果電腦作為辦公的裝置。但是在使用蘋果電腦的過程當中,也會遇到一些比較惱人的問題,那就是怎麼錄屏蘋果?那麼,怎麼才能實現更好的錄屏蘋果呢?其實您無需擔心,以下將為大家分享兩種錄屏蘋果電腦的方法,一起來看下吧。方法一 原始錄屏蘋果的方...