javaCV開發詳解之15:視頻幀像素格式轉換


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開發詳解之10:基於dshow調用windows攝像頭視頻和音頻,想要獲取屏幕畫面首選gdigrab

javaCV開發詳解之11:視頻文件轉gif動態圖片實現,也支持攝像機、桌面屏幕、流媒體等視頻源轉gif

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開發詳解補充篇:基於avfoundation的蘋果Mac和ios獲取屏幕畫面及錄屏/截屏以及攝像頭畫面和音頻采樣獲取實現

javaCV開發詳解之GIF動態圖片錄制補充篇:windows桌面屏幕畫面錄制成gif動態圖片,支持桌面任意取域生成gif,可擴展支持MacOS/安卓/linux等平台,可擴展支持apng動態圖片

音視頻編解碼問題:javaCV如何快速進行音頻預處理和解復用編解碼(基於javaCV-FFMPEG)

音視頻編解碼問題:16/24/32位位音頻byte[]轉換為小端序short[],int[],以byte[]轉short[]為例

實現給圖片增加圖片水印或者文字水印(也支持視頻圖像幀添加水印)

java原生實現屏幕設備遍歷和屏幕采集(捕獲)等功能

流媒體直播實時視頻延遲時間排查和剖析

javacv文字識別系列:

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

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

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更快的攝像頭讀取速度和效率,方便讀取后的圖像處理)

四、javacv圖像處理系列:國內車輛牌照檢測識別系統(萬份測試准確率99.7%以上)

前言

有很多場景,需要修改視頻解碼出來的圖像像素格式,比如典型的場景是我們要保存jpg/png/gif/apng等等截圖和動態圖或者要進行opencv圖像處理,就需要用到yuv、rgb和rgba等等像素格式才行。其實在前面幾章導出gif和apng動態圖已經涉及到了像素格式轉換,但是那只是其中一部分,比如經過圖像處理后的像素格式還需要推流,這時候還需要再編碼前進行像素格式轉換,才能進行編碼,本章主要分析解碼后像素格式轉換和編碼前像素格式轉換。

在javacv中,有兩個地方會發生或者讓javacv進行像素格式轉換的操作:FrameGrabber和FrameRecorder中。由於FrameGrabber和FrameRecorder有多個子類實現,所以本篇文章以FFmpegFrameGrabber和FFmpegFrameRecorder為例。它們分別發生在FFmpegFrameGrabber解碼后和FFmpegFrameRecorder編碼前。如果是轉封裝並不涉及像素格式轉換,轉封裝為什么無法修改視頻參數和像素格式等等操作的概念請參考:JavaCV入門指南:序章

完整查看本章:javaCV開發詳解之15:視頻幀像素格式轉換

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM