《JavaCV从入门到实战教程合集》是2016年《JavaCV开发实战教程》和2018年《JavaCV入门教程》2022年《JavaCV音视频实战宝典》三合一汇总合集,完整包含JavaCV入门教程》、《JavaCV开发实战教程》系列和《JavaCV音视频实战宝典》系列所有付费内容。
注意:《JavaCV音视频实战宝典》不适合入门读者,需要一定的背景知识才可以上手。
建议大家的阅读顺序按照先阅读《JavaCV入门教程》、然后配合《JavaCV开发实战教程》的简单案例上手之后,再看《JavaCV音视频实战宝典》,以避免不必要的疑问和难以上手的困惑。
《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入门教程》的理论知识讲解,更注重以翔实的实际案例,带领大家一步一步领略JavaCV强大的设备音视频采集(摄像头、麦克风、桌面屏幕)、音视频处理、拉流/推流、视频录制、hls切片、mp4切片、截图、icon图标制作、编解码、视频滤镜特效、GPU硬件加速等实战技术使用。
不仅如此,使用JavaCV可以快速通过sdk接入网络摄像头视频(海康、大华等宇视摄像机)并推流到我们指定的流媒体服务或者,或者也可以利用JavaCV实现自己的流媒体服务(例如:EasyMedia)实现websocket-flv,http-flv,hls等协议的实时视频/录像回放视频转发。
除此以外,利用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:windows下通过vfwcap抓取摄像头画面以及几种摄像头和屏幕画面采集实现截屏录屏比较
java原生实现屏幕设备遍历和屏幕采集(捕获)功能
javaCV开发详解之10:基于dshow调用windows摄像头视频和音频,想要获取屏幕画面首选gdigrab
javaCV开发详解之11:视频文件转gif动态图片实现,也支持摄像机、桌面屏幕、流媒体等视频源转gifjavacv开发详解之11补充篇:使用批量多张图片制作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:使用批量多张图片制作apng动态图
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切片录制详解,以拉流rtmp录制hls切片为例
JavaCV开发详解之24:使用javacv保存raw视频像素格式(yuv或者rgb),并使用ffplay播放raw
JavaCV开发详解之25:简单视频截图,视频文件和rtsp/rtmp/flv/hls等直播流截取一张图片
JavaCV开发详解之26:使用javacv对视频进行连续截图和覆盖截图,支持png,jpg,bmp等格式快速连续截图,适用于视频快照JavaCV开发详解之26补充篇:视频连续截图并按日期格式生成图片文件名称,支持png,jpg,bmp等格式快速连续截图
JavaCV开发详解之27:使用javacv把视频切割成多个视频分片文件,以mp4为例,把视频切割成MP4分片文件
JavaCV开发详解之27补充篇1:使用javacv把音视频切割成多个音频分片文件,以mp3为例,把视频切割成MP3分片文件
JavaCV开发详解之28:如何使用javacv进行多图推流和多图合成视频文件,以批量jpg图片推流rtmp和jpg合成flv视频文件为例
JavaCV开发详解之29:使用javacv将多个视频拼接合成单个视频,多个音频拼接合成单个音频
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开发详解之36:使用delogo滤镜实现去除和屏蔽视频水印
JavaCV实战教程补充内容
音视频编解码问题:javaCV如何快速进行音频预处理和解复用编解码(基于javaCV-FFMPEG)
音视频编解码问题:16/24/32位位音频byte[]转换为小端序short[],int[],以byte[]转short[]为例
实现给图片增加图片水印或者文字水印(也支持视频图像帧添加水印)
流媒体直播实时视频延迟时间排查和剖析
JavaCV精简依赖包:如何只依赖本地平台所需的最小依赖包
《JavaCV音视频实战宝典》是2022年最新推出专注于音视频开发的高级实战宝典教程系列,更加偏重综合类流媒体音视频应用,技术不在局限于JavaCV,可能会包含结合Java中较为经典的springboot,netty等综合性的技术内容来实现流媒体音视频直播服务和电台服务等应用场景。
通过2022年最新的《JavaCV音视频实战宝典》系列教程,小伙伴们可以轻松上手音视频项目开发,除了可以实现自己的直播平台、监控安防平台之外,还可以接入gb28181和海康大华等各种设备、各种嵌入式和流媒体服务都不再话下。
除此以外,针对在线教育和直播行业,还可以使用JavaCV制作自己的推流器,不需要根据OBS定制就可以实现自己的推流直播机了,由于JavaCV默认不再包含gpl v2许可协议的代码库,因此也不用担心违反许可协议的风险。
再者,对于各种开发板和树莓派等嵌入式的开发者,也可以轻松通过JavaCV实现“电子门禁”的人脸识别开门、上传实时视频和录像等重要功能。
对于服务端开发者来说,可以自行实现自己的流媒体转发服务或者统一码流转码接入分发服务。比如easymedia就通过JavaCV实现了自己可控的流媒体服务,不再需要依赖第三方的流媒体服务(比如取代fms、nginx-rtmp、srs、zlmeidakit等等流媒体服务)。
对于安卓或者pc客户端开发者来说,可以轻松开发出推流软件和视频剪辑软件,得益于完整的ffmpeg和opencv底层能力,可以轻松实现GPU硬件加速的图像处理识别、GPU硬件视频转码等能力和底层桌面画面录屏、摄像头采集和各种麦克风设备声音采集。
《JavaCV音视频开发宝典》专栏目录
JavaCV音视频开发宝典:视频转码和转封装有什么区别?使用rtsp拉流转推到rtmp案例来讲一下转码和转封装实现的区别
简单实现音视频流媒体服务。比如webm、http-flv和websocket-flv直播服务。
http-flv和websocket-flv视频直播
1.1、 JavaCV音视频开发宝典:使用JavaCV和springBoot实现http-flv直播服务,无需流媒体服务,浏览器网页flv.js转封装方式播放rtsp,rtmp和桌面投屏实时画面
1.2、JavaCV音视频开发宝典:无需流媒体服务也无需转码,使用JavaCV和springBoot实现http-flv转封装直播服务,浏览器网页flv.js直接播放rtp、rtsp、rtmp实时视频
2、JavaCV音视频开发宝典:使用JavaCV和springBoot实现websocket-flv直播服务,无需流媒体服务,浏览器网页flv.js播放器直接播放rtsp,rtmp等实时视频webm视频直播
3、 JavaCV音视频开发宝典:使用JavaCV实现webm直播服务,无需流媒体服务,无需mse转封装插件(flv.js,hls.js),浏览器原生video标签直接播放rtsp,rtmp和桌面投屏直播
简单实现音频流媒体服务。比如模仿喜.马.拉.雅FM电台直播的mp3和wav音频直播服务。
mp3和wav的音频直播
1、 JavaCV音视频开发宝典:JavaCV实现mp3音频直播FM在线电台服务,无需流媒体服务,浏览器原生audio标签直接播放mp3,支持rtsp/rtmp/flv/hls/本地音视频源直接转码到mp3
2、JavaCV音视频开发宝典:基于JavaCV实现wav音频直播服务,wav在线FM电台直播服务,无需流媒体服务,浏览器原生audio标签直接播放wav直播音频
概览
包含音视频文件、rtp、rtsp、rtmp、flv、hls、gb28181/海康/大华/宇视/科达等摄像机设备接入、以及PC桌面画面、麦克风声音、系统声音采集、Base64编码的图片字符串解析等等多种音视频源(包含图片)的接入解码
拉流和推流
- JavaCV音视频开发宝典:rtsp转推到rtmp
- JavaCV音视频开发宝典:rtsp转推到rtsp
- JavaCV音视频开发宝典:rtsp转推到rtp
- JavaCV音视频开发宝典:rtp点到点音视频传输(一对一音视频直播)
- JavaCV音视频开发宝典:rtp广播方式音视频传输(一对多音视频直播)
gb28181、海康大华网络摄像机sdk接入和海康大华视频平台sdk接入(支持实时视频流和录像回放)
1、 JavaCV音视频开发宝典:JavaCV读取海康、大华平台和海康、大华摄像头sdk回调视频裸流并解析预览图像
2、 JavaCV音视频开发宝典:使用javacv读取GB28181、海康大华平台和网络摄像头sdk回调视频码流并转码推流rtmp流媒体服务
桌面屏幕录屏和麦克风采集
dshow方式屏幕录屏和系统声音采集
1、 JavaCV音视频开发宝典:使用JavaCV基于采集windows桌面屏幕画面并录屏mp4视频文件(FFmpeg基于dshow方式采集windows系统桌面画面)
2、JavaCV音视频开发宝典:使用JavaCV采集windows系统声音并录制成mp3音频文件(FFmpeg采集windows系统声音)
屏幕画面和系统声音混合3、 JavaCV音视频开发宝典:JavaCV混合屏幕录屏和系统声音录制mp4视频文件(windows桌面屏幕和系统声音混合录制)
摄像头画面图像和麦克风声音采集
4、 javaCV音视频开发宝典:JavaCV使用gdigrab方式实现windows录屏(windows屏幕画面抓取/采集,可实现高帧率屏幕截屏、录屏功能)
5、 javaCV音视频开发宝典:JavaCV基于x11grab方式实现linux录屏功能(linux屏幕画面抓取/采集)
6、 JavaCV音视频开发宝典:JavaCV使用avfoundation方式实现苹果MacOS录屏和麦克风声音采集
base64图片编码字符串解析
1、 JavaCV音视频开发宝典:JavaCV读取Base64编码图片并解析预览图片
2、 JavaCV音视频开发宝典:实现Base64编码图片转换成图片文件通用转换器,以base64转png图片文件为例,其他图片格式也全部支持
GPU硬件加速 转码
1、 JavaCV音视频开发宝典:JavaCV使用GPU硬件加速,进行音视频的硬解码和硬编码,支持intel、amd、nvidia显卡在windows、linux、苹果mac、安卓等多平台下的使用
包含rtp、rtmp、rtsp推流及hls(ts切片)、dash(m4s切片)、mp4切片录制以及webm推流和webm视频文件录制。
以及gif动态图片录制。
视频分片录制(mp4分片、hls、dash)
1、 JavaCV音视频开发宝典:JavaCV实现rtsp拉流转码方式录制生成hls切片,m3u8清单/ts切片录制详解,解决hls_time无效问题
2、 Javacv音视频开发宝典:使用JavaCV实现转封装方式rtsp拉流录制hls切片,转封装方式录制ts切片,无需转码录制ts切片
3、 JavaCV音视频开发宝典:JavaCV实现HLS切片录制,自动根据日期时间格式生成切片ts文件和目录
4、 JavaCV音视频开发宝典:JavaCV录制dash视频分片,mpeg-dash视频录制,mpd视频录制
webm格式视频直播和录制
- JavaCV音视频开发宝典:录制vp8和vp9编码的webm格式视频,以mp4转webm为例
- JavaCV音视频开发宝典:vb8和vp9编码的webm格式视频文件转成mp4文件
- JavaCV音视频开发宝典:使用JavaCV实现webm直播服务,无需流媒体服务,无需mse转封装插件(flv.js,hls.js),浏览器原生video标签直接播放rtsp,rtmp和桌面投屏直播
屏幕录屏生成gif动态图
1、 javaCV音视频开发宝典:JavaCV实现gif动态图制作,Windows桌面屏幕图像录制成gif动态图片,支持桌面屏幕任意区域生成gif
END