音視頻處理、圖像處理、圖像識別和字符識別全能庫JavaCV完整教程(包含完整JavaCV入門、JavaCV實戰、ffmpeg、opencv和tesserac教程)

前言

一個老生常談的問題,JavaCV可以做什麼?

  1. 首先是音視頻處理,編解碼,裝封裝,只要ffmpeg可以的javacv就可以
  2. 再者是圖像處理和圖像識別,可以藉助opencv圖像檢測識別和tessert字符識別,他們也沒有什麼不同,只是javacv通過jni讓它們跨平臺了而已,簡化了opencv和tessert環境配置,更加容易上手。
  3. 矩陣計算,深度學習(deeplearning)等方面的也不在話下

JavaCV完整教程

從入門到實戰再到進階底層ffmpeg、opencv和tesserac等庫。爲了便於不同基礎的開發者掌握JavaCV,比如有些開發者有opencv或者ffmpeg的使用基礎,很多基礎內容可以跳過,博主將整個JavaCV分成五個JavaCV專欄用於闡述JavaCV基礎知識、JavaCV實戰教程以及ffmpeg、opencv和tesserac,方便開發者分別訂閱自己所需要的專欄。當然了,大部分Java開發者對於音視頻和圖像處理、識別這塊完全是零基礎入門,所以,博主也推出了JavaCV五合一專欄,便於零基礎的開發者們更快的入門。
所有內容和擴展補充知識:



國產化適配(龍芯架構)補充文章:
如何在龍芯架構和國產化操作系統平臺上運行javacv

各個專欄內容概述

JavaCV入門教程

《JavaCV入門教程》詳細介紹了音視頻流媒體、圖像處理識別等技術的前置知識,JavaCV的基礎結構明細以及JavaCV各個結構的說明和用法。通過配合JavaCV實戰教程中的實例帶領大家全面理解JavaCV。

JavaCV實戰教程

《JavaCV實戰教程》相比於《JavaCV入門教程》的理論知識講解,更注重以翔實的實際案例,帶領大家一步一步領略JavaCV強大的設備音視頻採集(攝像頭、麥克風、桌面屏幕)、音視頻處理、拉流/推流、視頻錄製、hls切片、mp4切片、截圖、icon圖標製作、編解碼、視頻濾鏡特效、GPU硬件加速等實戰技術使用。

不僅如此,使用JavaCV可以快速通過sdk接入網絡攝像頭視頻(海康、大華等宇視攝像機)並推流到我們指定的流媒體服務或者,或者也可以利用JavaCV實現自己的流媒體服務(例如:EasyMedia)實現websocket-flv,http-flv,hls等協議的實時視頻/錄像回放視頻轉發。

除此以外,利用JavaCV視頻濾鏡也可以快速實現各種字符疊加,圖片疊加,畫中畫、多視頻合流等特效。

JavaCV涉及非常豐富的實戰案例內容,更多內容不詳細介紹,敬請查看 《JavaCV實戰教程》,領略全面的流媒體音視頻開發技術。

JavaCV進階FFmpeg音視頻

《JavaCV進階FFmpeg音視頻》相比於使用JavaCV封裝好的類庫,相當於直接調用ffmpeg的api,相當於提供了ffmpeg的java版本api,比JavaCV封裝庫更加自由,適合想要深入瞭解ffmpeg音視頻開發技術的開發者,以及覺得JavaCV不太能滿足自己的需要,想要自己定製開發更加複雜和可控的音視頻技術,它更加貼近底層,需要開發者具有全面的ffmpeg基礎知識才能上手。

JavaCV進階opencv圖像處理

《JavaCV進階opencv圖像處理》專欄提供了JavaCV方式調用opencv底層庫的方法。
主要講解了基於opencv技術的javacv圖像處理、人臉檢測、人臉訓練、人臉識別、二維碼檢測、識別等實際案例,帶領大家快速上手javaCV圖像處理/識別技術。

注意:因爲opencv本身也提供java的api,所以要注意它跟javacv的api是不相通的。如果使用javacv中的其他類庫,則必須配合使用JavaCV方式的opencv。

JavaCV進階tesserac字符識別

《JavaCV進階tesserac字符識別》詳細講解了JavaCV使用google的tesserac實現檢測攝像頭或者視頻中字符並實現字符識別。

JavaCV五合一教程合輯

《JavaCV五合一教程合輯》包含上述五個專欄全部內容,相比全部單獨訂閱JavaCV五個單獨的專欄價格更加優惠。

JavaCV所有專欄目錄一覽

JavaCV入門教程目錄

JavaCV入門指南:序章(看完本章後,不想看原理的小夥伴可直接跳轉到《快速上手篇》)
JavaCV入門指南:調用FFmpeg原生API和JavaCV是如何封裝了FFmpeg的音視頻操作
JavaCV入門指南:調用opencv原生API和JavaCV是如何封裝了opencv的圖像處理操作
JavaCV入門指南:幀抓取器(FrameGrabber)的原理與應用
JavaCV入門指南:幀錄製器/推流器(FrameRecorder)的原理與應用
JavaCV入門指南:幀過濾器(FrameFilter)的原理與應用
JavaCV入門指南:FrameConverter轉換工具類及CanvasFrame圖像預覽工具類(完結篇)

《快速上手篇》(爲了區別,單獨劃分):
JavaCV入門指南之快速上手篇:快速上手視頻拉流、推流、錄製文件、錄屏、截圖和編解碼複用解複用等常用音視頻處理操作

javaCV實戰教程目錄

javacv開發詳解之1:調用本機攝像頭視頻
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開發詳解之9補充篇1:基於avfoundation的蘋果Mac和ios獲取屏幕畫面及錄屏/截屏以及攝像頭畫面和音頻採樣獲取實現
javaCV開發詳解之9補充篇2:基於x11grab的linux屏幕畫面抓取/採集(linux錄屏功能)
java原生實現屏幕設備遍歷和屏幕採集(捕獲)功能

javaCV開發詳解之10:基於dshow調用windows攝像頭視頻和音頻,想要獲取屏幕畫面首選gdigrab
javaCV開發詳解之11:視頻文件轉gif動態圖片實現,也支持攝像機、桌面屏幕、流媒體等視頻源轉gif

javaCV開發詳解之11補充篇1:屏幕錄製gif動態圖,使用windows桌面屏幕畫面錄製成gif動態圖片,支持桌面任意取域生成gif,可擴展支持MacOS/安卓/linux等平臺,可擴展支持apng動態圖片
javacv開發詳解之11補充篇2:使用批量多張圖片製作gif動態圖

javaCV開發詳解之12:視頻轉apng動態圖片實現,支持透明通道,支持攝像機、桌面屏幕、流媒體等視頻源轉apng動態圖

javacv開發詳解之12補充篇:使用批量多張圖片製作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開發詳解之21補充篇1:使用javacv讀取大華攝像頭sdk回調視頻裸流並解析

JavaCV開發詳解之22:flv,live_flv格式說明,http-flv拉流和http-flv推流及rtmp拉流和rtmp推流全面分析和開發實戰
JavaCV開發詳解之23:hls視頻錄製,m3u8切片錄製和fmp4切片錄製詳解,以拉流rtmp錄製hls切片爲例

javacv開發詳解之23補充篇1:hls切片錄製,rtsp拉流錄製生成hls切片,m3u8清單/ts切片錄製詳解,解決hls_time無效問題
javacv開發詳解之23補充篇2:hls切片轉封裝錄製,無需轉碼進行ts切片,m3u8清單/ts切片錄製
JavaCV開發詳解之23補充篇3:hls切片錄製,自動根據日期時間格式生成切片ts文件和目錄

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開發詳解之29:使用javacv將多個視頻拼接合成單個視頻,多個音頻拼接合成單個音頻

JavaCV開發詳解之27補充篇1:使用javacv把音視頻切割成多個音頻分片文件,以mp3爲例,把視頻切割成MP3分片文件

JavaCV開發詳解之30:如何使用javacv拉取rtsp視頻流,rtsp解複用器詳解。如何把rtsp調教的服服帖帖,讓rtsp拉流不再丟包
JavaCV開發詳解之31:如何計算pts/dts時間戳,在視頻轉碼和轉複用中如何自行計算pts/dts時間戳

javacv開發詳解補充篇:解決轉流後視頻畫面快進慢放,時間跳動過大,監控視頻時間戳重新計算pts和dts

JavaCV開發詳解之32:使用filter濾鏡實現中文字符疊加
JavaCV開發詳解之33:使用filter濾鏡實現動態日期時間疊加
JavaCV開發詳解之34:使用filter濾鏡實現無限循環滾動字符疊加,跑馬燈特效
JavaCV開發詳解之35:使用filter濾鏡實現畫中畫,以屏幕畫面疊加攝像頭畫面爲例

JavaCV實戰教程補充內容目錄

音視頻編解碼問題:javaCV如何快速進行音頻預處理和解複用編解碼(基於javaCV-FFMPEG)
音視頻編解碼問題:16/24/32位位音頻byte[]轉換爲小端序short[],int[],以byte[]轉short[]爲例
實現給圖片增加圖片水印或者文字水印(也支持視頻圖像幀添加水印)
流媒體直播實時視頻延遲時間排查和剖析
JavaCV精簡依賴包:如何只依賴本地平臺所需的最小依賴包

javacv進階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檢索時間過長問題

javacv進階opencv系列目錄

javaCV圖像處理之1:實時視頻添加文字水印並截取視頻圖像保存成圖片,實現文字水印的字體、位置、大小、粗度、翻轉、平滑等操作
javaCV圖像處理之2:實時視頻添加圖片水印,實現不同大小圖片疊加,圖像透明度控制
javacv圖像處理3:使用opencv原生方法遍歷攝像頭設備及調用(方便多攝像頭遍歷及調用,相比javacv更快的攝像頭讀取速度和效率,方便讀取後的圖像處理)
javacv圖像處理系列:國內車輛牌照檢測識別系統(萬份測試準確率99.7%以上)

javacv人臉檢測識別目錄

opencv人臉檢測識別:

JavaCV進階opencv圖像檢測識別:攝像頭畫面人臉檢測
JavaCV進階opencv圖像檢測識別:ffmpeg視頻圖像畫面人臉檢測
JavaCV進階opencv圖像處理:批量人臉圖像分類訓練
JavaCV進階opencv圖像處理:攝像頭圖像人臉識別

二維碼識別目錄

二維碼識別 JavaCV進階opencv圖像處理:掃描並識別攝像頭中的二維碼
JavaCV進階opencv圖像處理:10行代碼快速實現掃描識別圖片中的二維碼
JavaCV進階opencv圖像處理:掃描並識別視頻中的二維碼

javacv進階tesserac文字識別系列目錄

javaCV文字識別之1:基於google的tesserac ocr識別圖片中的文字,跨平臺支持英文中文簡體繁體等各種字符識別

javaCV文字識別之2:視頻文字識別和視頻提取字幕文字字符

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