javaCV系列文章:
javaCV開發詳解之2:推流器實現,推本地攝像頭視頻到流媒體服務器以及攝像頭錄制視頻功能實現(基於javaCV-FFMPEG、javaCV-openCV)
javaCV開發詳解之3:收流器實現,錄制流媒體服務器的rtsp/rtmp視頻文件(基於javaCV-FFMPEG)
javaCV開發詳解之4:轉流器實現(也可作為本地收流器、推流器,新增添加圖片及文字水印,視頻圖像幀保存),實現rtsp/rtmp/本地文件轉發到rtmp流媒體服務器(基於javaCV-FFMPEG)
javaCV開發詳解之5:錄制音頻(錄制麥克風)到本地文件/流媒體服務器(基於javax.sound、javaCV-FFMPEG)
javaCV開發詳解之6:本地音頻(話筒設備)和視頻(攝像頭)抓取、混合並推送(錄制)到服務器(本地)
javaCV開發詳解之7:讓音頻轉換更加簡單,實現通用音頻編碼格式轉換、重采樣等音頻參數的轉換功能(以pcm16le編碼的wav轉mp3為例)
javaCV開發詳解之8:轉封裝在rtsp轉rtmp流中的應用(無須轉碼,更低的資源消耗,更好的性能,更低延遲)
javaCV開發詳解之9:基於gdigrab的windows屏幕畫面抓取/采集(基於javacv的屏幕截屏、錄屏功能)
javaCV開發詳解補充篇:基於avfoundation的蘋果Mac和ios獲取屏幕畫面及錄屏/截屏以及攝像頭畫面和音頻采樣獲取實現
java原生實現屏幕設備遍歷和屏幕采集(捕獲)功能
javaCV開發詳解之10:基於dshow調用windows攝像頭視頻和音頻,想要獲取屏幕畫面首選gdigrab
javaCV開發詳解之11:視頻文件轉gif動態圖片實現,也支持攝像機、桌面屏幕、流媒體等視頻源轉gif
javaCV開發詳解之GIF動態圖片錄制補充篇:windows桌面屏幕畫面錄制成gif動態圖片,支持桌面任意取域生成gif,可擴展支持MacOS/安卓/linux等平台,可擴展支持apng動態圖片
javaCV開發詳解之12:視頻轉apng動態圖片實現,支持透明通道,支持攝像機、桌面屏幕、流媒體等視頻源轉apng動態圖
javaCV開發詳解之13:使用FFmpeg Filter過濾器處理音視頻
javaCV開發詳解之14:音頻重采樣
javaCV開發詳解之15:視頻幀像素格式轉換
javaCV開發詳解之16:使用一張圖片推流和一張圖片錄制成視頻文件
javaCV開發詳解之17:GIF和APNG動態圖片推流和錄制成視頻文件(以gif轉mp4為例)
javaCV開發詳解之18:音視頻轉碼(音頻編解碼和視頻編解碼)
JavaCV開發詳解之19:如何開啟GPU硬件加速,使用JavaCV進行音視頻的硬解碼和硬編碼
JavaCV開發詳解之20:如何使用JavaCV制作ico圖標,圖片和視頻生成ico圖標,視頻流錄制ico圖標
JavaCV開發詳解之21:如何使用JavaCV接入gb28181的ps流並推流到流媒體服務和接入海康大華sdk回調h264/hevc裸流
JavaCV開發詳解之22:flv,live_flv格式說明,http-flv拉流和http-flv推流及rtmp拉流和rtmp推流全面分析和開發實戰
JavaCV開發詳解之23:hls視頻錄制,m3u8切片錄制和fmp4切片錄制詳解
JavaCV開發詳解之24:使用javacv錄制dash視頻分片,mpeg-dash視頻錄制和制作
JavaCV開發詳解之25:使用javacv保存raw視頻像素格式(yuv或者rgb),並使用ffplay播放raw
JavaCV開發詳解之26:使用javacv對視頻進行連續截圖和覆蓋截圖,支持png,jpg,bmp等格式快速連續截圖,適用於視頻快照
JavaCV開發詳解之27:使用javacv把視頻切割成多個視頻分片文件,以mp4為例,把視頻切割成MP4分片文件
JavaCV開發詳解之28:如何使用javacv進行多圖推流和多圖合成視頻文件,以批量jpg圖片推流rtmp和jpg合成flv視頻文件為例
補充篇:
javacv開發詳解補充篇:解決轉流后視頻畫面快進慢放,時間跳動過大,監控視頻時間戳重新計算pts和dts
音視頻編解碼問題:javaCV如何快速進行音頻預處理和解復用編解碼(基於javaCV-FFMPEG)
音視頻編解碼問題:16/24/32位位音頻byte[]轉換為小端序short[],int[],以byte[]轉short[]為例
實現給圖片增加圖片水印或者文字水印(也支持視頻圖像幀添加水印)
流媒體直播實時視頻延遲時間排查和剖析
javacpp-ffmpeg系列:
javacpp-FFmpeg系列之1:視頻拉流解碼成YUVJ420P,並保存為jpg圖片
javacpp-FFmpeg系列之2:通用拉流解碼器,支持視頻拉流解碼並轉換為YUV、BGR24或RGB24等圖像像素數據
javacpp-FFmpeg系列之3: 圖像數據轉換(BGR與BufferdImage互轉,RGB與BufferdImage互轉)
javacpp-FFmpeg系列補充:FFmpeg解決avformat_find_stream_info檢索時間過長問題
javacpp-opencv系列:
一、javaCV圖像處理之1:實時視頻添加文字水印並截取視頻圖像保存成圖片,實現文字水印的字體、位置、大小、粗度、翻轉、平滑等操作
二、javaCV圖像處理之2:實時視頻添加圖片水印,實現不同大小圖片疊加,圖像透明度控制
三、javacv圖像處理3:使用opencv原生方法遍歷攝像頭設備及調用(方便多攝像頭遍歷及調用,相比javacv更快的攝像頭讀取速度和效率,方便讀取后的圖像處理)
一、前言
本系列文章前面內容基本覆蓋了推流拉流等內容,屏幕截屏之前也寫過,只不過是基於java的,幀率比較低,所以就有了本章,基於javacv的屏幕錄制、截屏功能實現。
本文重點參考了雷霄驊博士的ffmpeg錄屏實現:最簡單的基於FFmpeg的AVDevice例子(屏幕錄制)。
二、實現功能
本章主要實現基於javacv的屏幕錄制和截屏功能,簡單實現平均幀率計算。
javacv中有兩種方式可以獲取windows下的屏幕畫面,一種是本章使用的gdigrab方式,另一種是基於dshow的方式。
gdigrab進行實現有以下幾個特點
1、屏幕任意范圍截屏(offset_x,offset_y,width,height)
2、支持設置抓取幀率,支持高幀率(實測可以超過60幀/秒)
3、支持根據windows窗口標題(title)獲取窗口畫面,暫時支持中文,使用方式是:title=窗口標題名稱
4、鼠標繪制和隱藏(通過draw_mouse屬性控制是否隱藏鼠標,0=隱藏鼠標,1=顯示鼠標)
完整查看本章請到:https://eguid.blog.csdn.net/article/details/105775362