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開發詳解之10:基於dshow調用windows攝像頭視頻和音頻,想要獲取屏幕畫面首選gdigrab
javaCV開發詳解之11:視頻文件轉gif動態圖片實現,也支持攝像機、桌面屏幕、流媒體等視頻源轉gif
javaCV開發詳解之12:視頻轉apng動態圖片實現,支持透明通道,支持攝像機、桌面屏幕、流媒體等視頻源轉apng動態圖
javaCV開發詳解之13:使用FFmpeg Filter過濾器處理音視頻
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開發詳解補充篇:基於avfoundation的蘋果Mac和ios獲取屏幕畫面及錄屏/截屏以及攝像頭畫面和音頻采樣獲取實現
javaCV開發詳解之GIF動態圖片錄制補充篇:windows桌面屏幕畫面錄制成gif動態圖片,支持桌面任意取域生成gif,可擴展支持MacOS/安卓/linux等平台,可擴展支持apng動態圖片
音視頻編解碼問題:javaCV如何快速進行音頻預處理和解復用編解碼(基於javaCV-FFMPEG)
音視頻編解碼問題:16/24/32位位音頻byte[]轉換為小端序short[],int[],以byte[]轉short[]為例
javacv文字識別系列:
javaCV文字識別之1:基於google的tesserac ocr識別圖片中的文字,跨平台支持英文中文簡體繁體等各種字符識別
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更快的攝像頭讀取速度和效率,方便讀取后的圖像處理)
前言
有很多場景,需要修改視頻解碼出來的圖像像素格式,比如典型的場景是我們要保存jpg/png/gif/apng等等截圖和動態圖或者要進行opencv圖像處理,就需要用到yuv、rgb和rgba等等像素格式才行。其實在前面幾章導出gif和apng動態圖已經涉及到了像素格式轉換,但是那只是其中一部分,比如經過圖像處理后的像素格式還需要推流,這時候還需要再編碼前進行像素格式轉換,才能進行編碼,本章主要分析解碼后像素格式轉換和編碼前像素格式轉換。
在javacv中,有兩個地方會發生或者讓javacv進行像素格式轉換的操作:FrameGrabber和FrameRecorder中。由於FrameGrabber和FrameRecorder有多個子類實現,所以本篇文章以FFmpegFrameGrabber和FFmpegFrameRecorder為例。它們分別發生在FFmpegFrameGrabber解碼后和FFmpegFrameRecorder編碼前。如果是轉封裝並不涉及像素格式轉換,轉封裝為什么無法修改視頻參數和像素格式等等操作的概念請參考:JavaCV入門指南:序章
完整查看本章:javaCV開發詳解之15:視頻幀像素格式轉換