本章作為javacv技術棧系列文章匯總
前言
寫了不少關於javacv的文章,不敢說精通 ,只能說對javacv很熟悉。雖然偶爾也提交pull request做做貢獻,但是javacv包含的庫實在太多了。有些庫也不太可能每個應用場景都會用到,所以平時主要還是以ffmpeg音視頻處理為主,順帶着寫一點opencv圖像處理,圖像檢測識別和tessert文字識別等等。
javacv是什么?javacv技術棧能做什么?
一個老生常談的問題,相信大家各種搜索引擎搜一下應該知道它能做了什么了。
首先是音視頻處理,編解碼,裝封裝,只要ffmpeg可以的javacv就可以,他們沒有什么不同。
再者是圖像處理和圖像識別,可以借助opencv圖像檢測識別和tessert字符識別,他們也沒有什么不同,只是javacv通過jni讓它們跨平台了而已,不需要自己再去封裝了。
剩下的包含矩陣計算,深度學習等方面的內容,了解不多,不多贅述。
javacv技術棧的應用場景
很多人好奇,現在javacv常被用在哪些應用場景下?
javacv跨平台,不僅可以在windows,linux,macos等服務器或者客戶都安機器上工作,在各種嵌入式板子上也不在話下。
嵌入式領域:
很多人把javacv用在樹莓派等等的一些基於arm芯片的板子上,外掛攝像頭或者音頻設備就可以實現音視頻上傳,圖像處理,圖像識別等等操作。
流媒體:
利用javacv的流媒體優勢,可以輕松實現音視頻采集,推流,編解碼,裝封裝等等操作。
深度學習:
deeplearn4j為主的利用java大數據能力進行深度學習,這方面了解不多,但是它確實挺出名的。
人臉檢測識別:
網上搜到javacv最多的文章就是關於人臉檢測識別的了,javacv官網的首頁demo就是人臉檢測的例子,opencv能做到的它都可以。
文字識別:
利用Tesseract-OCR可以輕松實現字符庫訓練,字符識別。還可以借助javacv特有的流媒體屬性和嵌入式開發特性實現攝像頭的字符識別,視頻圖像的字符識別等場景。
JavaCV入門指南系列
- 《快速上手篇》(為了區別,單獨划分):
- JavaCV入門指南之快速上手篇:快速上手視頻拉流、推流、錄制文件、錄屏、截圖和編解碼復用解復用等常用音視頻處理操作
javaCV實戰系列
-
javaCV開發詳解之2:推流器實現,推本地攝像頭視頻到流媒體服務器以及攝像頭錄制視頻功能實現(基於javaCV-FFMPEG、javaCV-openCV)
-
javaCV開發詳解之4:轉流器實現(也可作為本地收流器、推流器,新增添加圖片及文字水印,視頻圖像幀保存),實現rtsp/rtmp/本地文件轉發到rtmp流媒體服務器(基於javaCV-FFMPEG)
-
javaCV開發詳解之5:錄制音頻(錄制麥克風)到本地文件/流媒體服務器(基於javax.sound、javaCV-FFMPEG)
-
javaCV開發詳解之7:讓音頻轉換更加簡單,實現通用音頻編碼格式轉換、重采樣等音頻參數的轉換功能(以pcm16le編碼的wav轉mp3為例)
-
javaCV開發詳解之12:視頻轉apng動態圖片實現,支持透明通道,支持攝像機、桌面屏幕、流媒體等視頻源轉apng動態圖
-
JavaCV開發詳解之21:如何使用JavaCV接入gb28181的ps流並推流到流媒體服務和接入海康大華sdk回調h264/hevc裸流
JavaCV開發詳解之22:http-flv拉流和http-flv推流及rtmp拉流和rtmp推流實例和flv,live_flv格式說明
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及音視頻相關補充篇
-
javaCV開發詳解補充篇:基於avfoundation的蘋果Mac和ios獲取屏幕畫面及錄屏/截屏以及攝像頭畫面和音頻采樣獲取實現
-
javaCV開發詳解之GIF動態圖片錄制補充篇:windows桌面屏幕畫面錄制成gif動態圖片,支持桌面任意取域生成gif,可擴展支持MacOS/安卓/linux等平台,可擴展支持apng動態圖片
-
音視頻編解碼問題:16/24/32位位音頻byte[]轉換為小端序short[],int[],以byte[]轉short[]為例
javacv進階tesserac文字識別系列
javacv進階ffmpeg系列
-
javacpp-FFmpeg系列之2:通用拉流解碼器,支持視頻拉流解碼並轉換為YUV、BGR24或RGB24等圖像像素數據
-
javacpp-FFmpeg系列之3: 圖像數據轉換(BGR與BufferdImage互轉,RGB與BufferdImage互轉)
-
javacpp-FFmpeg系列補充:FFmpeg解決avformat_find_stream_info檢索時間過長問題
javacv進階opencv系列
-
javaCV圖像處理之1:實時視頻添加文字水印並截取視頻圖像保存成圖片,實現文字水印的字體、位置、大小、粗度、翻轉、平滑等操作
-
javacv圖像處理3:使用opencv原生方法遍歷攝像頭設備及調用(方便多攝像頭遍歷及調用,相比javacv更快的攝像頭讀取速度和效率,方便讀取后的圖像處理)
javacv人臉檢測識別
持續更新