1.javaCV入门指南:序章2.JavaCV入门指南:帧抓取器(FrameGrabber)的原理与应用3.JavaCV入门指南:帧录制器/推流器(FrameRecorder)的原理与应用4.javaCV入门指南:调用FFmpeg原生API和JavaCV是如何封装了FFmpeg的音视频操作?
5.JavaCV入门指南:调用opencv原生API和JavaCV是如何封装了opencv的图像处理操作?6.JavaCV入门指南:FrameConverter转换工具类及CanvasFrame图像预览工具类(javaCV教程完结篇)7.JavaCV入门指南之快速上手篇:快速上手视频拉流、推流、录制文件、录屏、截图和编解码复用解复用等常用音视频处理操作8.javacv开发详解之1:调用本机摄像头视频(建议使用javaCV最新版本)9.javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG、javaCV-openCV)10.javaCV开发详解之3:收流器实现,录制流媒体服务器的rtsp/rtmp视频文件(基于javaCV-FFMPEG)11.javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)12.javaCV开发详解之5:录制音频(录制麦克风)到本地文件/流媒体服务器(基于javax.sound、javaCV-FFMPEG)13.javaCV开发详解之6:本地音频(话筒设备)和视频(摄像头)抓取、混合并推送(录制)到服务器(本地)14.javaCV开发详解之7:让音频转换更加简单,实现通用音频编码格式转换、重采样等音频参数的转换功能(以pcm16le编码的wav转mp3为例)15.javaCV开发详解之8:转封装在rtsp转rtmp流中的应用(无须转码,更低的资源消耗)16.javaCV开发详解之9:基于gdigrab的windows屏幕画面抓取/采集(基于javacv的屏幕截屏、录屏功能)17.javaCV开发详解之10:基于dshow调用windows摄像头视频和音频,想要获取屏幕画面首选gdigrab18.javaCV开发详解之11:视频文件转gif动态图片实现,也支持摄像机、桌面屏幕、流媒体等视频源转gif19.javaCV开发详解之12:视频转apng动态图片实现,支持透明通道,也支持摄像机、桌面屏幕、流媒体等视频源转apng动态图20.javaCV开发详解之13:简单使用FFmpeg-Filter过滤器处理音视频,添加特殊效果21.javaCV开发详解之14:音频重采样22.javaCV开发详解之15:视频帧像素格式转换23.javaCV开发详解之16:使用一张图片推流和一张图片录制成视频文件24.javaCV开发详解之17:GIF和APNG动态图片推流和录制成视频文件(以gif转mp4和apng转mp4为例)25.javaCV开发详解之18:音视频转码(音频编解码和视频编解码)26.JavaCV开发详解之19:如何开启GPU硬件加速,使用JavaCV进行音视频的硬解码和硬编码(支持intel、amd和nvidia)27.JavaCV开发详解之20:如何使用JavaCV制作ico图标,图片和视频生成ico图标,视频流录制ico图标28.JavaCV开发详解之21:如何使用JavaCV接入gb28181的ps流并推流到流媒体服务和接入海康大华sdk回调h264/hevc裸流29.JavaCV开发详解之22:http-flv拉流和http-flv推流及rtmp拉流和rtmp推流实例和flv推流和flv录制,关于rtmp/flv支持h265补充说明30.JavaCV开发详解之23:hls视频录制,m3u8切片录制和fmp4切片录制详解31.JavaCV开发详解之24:使用javacv录制dash视频分片,mpeg-dash视频录制,mpd视频录制32.JavaCV开发详解之25:使用javacv保存raw视频像素格式(yuv或者rgb),并使用ffplay播放raw33.JavaCV开发详解之26:使用javacv对视频进行连续截图和覆盖截图,支持png,jpg,bmp等格式快速连续截图,适用于rtsp/rtmp/flv/hls等流媒体和本地视频快照34.JavaCV开发详解之26补充篇:视频连续截图并按日期格式生成图片文件名称,支持png,jpg,bmp等格式快速连续截图35.JavaCV开发详解之27:使用javacv把视频切割成多个视频分片文件,以mp4为例,把视频切割成MP4分片文件36.JavaCV开发详解之28:如何使用javacv进行多图推流和多图合成视频文件,以批量jpg图片推流rtmp和jpg合成flv视频文件为例37.JavaCV开发详解之29:使用javacv将多个视频拼接合成单个视频,多个音频拼接合成单个音频,以多个mp4视频合成一个mp4为例38.JavaCV开发详解之30:使用javacv拉取rtsp视频流,rtsp解复用器详解。如何把rtsp调教的服服帖帖,让rtsp拉流不再丢包39.JavaCV开发详解之31:如何计算pts/dts时间戳,在视频转码和转复用中如何自行计算pts/dts时间戳40.JavaCV开发详解之32:使用filter滤镜实现中文字符叠加41.JavaCV开发详解之33:使用filter滤镜实现动态日期时间叠加42.JavaCV开发详解之34:使用filter滤镜实现字符滚动和无限循环滚动字符叠加,跑马灯特效制作43.JavaCV开发详解之36:使用delogo滤镜实现去除和屏蔽视频水印44.JavaCV开发详解之35:使用filter滤镜实现画中画,以屏幕画面叠加摄像头画面为例45.javaCV开发详解之GIF动态图片录制补充篇:windows桌面屏幕画面录制成gif动态图片,支持桌面屏幕任意区域生成gif,可扩展支持MacOS/安卓/linux等平台,可扩展支持apng动态图片46.如何在龙芯架构和国产化操作系统平台上运行javacv47.聊聊视频中的编解码器,你所不知道的h264、h265、vp8、vp9和av1编解码库48.JavaCV音视频开发宝典:vb8和vp9编码的webm格式视频文件转成mp4文件49.JavaCV升级1.5.6之后遇到h265/hevc编码的视频无法打开编解码器avcodec_open2() error -1:Could not open video codec异常解决办法50.JavaCV更新到1.5.x版本后的依赖问题说明以及如何精简依赖包大小51.JavaCV音视频开发宝典:使用JavaCV和springBoot实现websocket-flv直播服务,无需流媒体服务,浏览器网页flv.js播放器直接播放rtsp,rtmp等实时视频52.JavaCV音视频开发宝典:无需流媒体服务也无需转码(低资源消耗),使用JavaCV和springBoot实现http-flv转封装直播服务,浏览器网页flv.js直接播放rtp、rtsp、rtmp实时视频53.JavaCV音视频开发宝典:使用JavaCV和springBoot实现http-flv直播服务,无需流媒体服务,浏览器网页flv.js转封装方式播放rtsp,rtmp和桌面投屏实时画面54.javacv开发详解补充篇:如何将rgb/bgr像素数据优雅高效的转换为BufferedImage55.javaCV开发详解之技术杂烩:javaCV能帮我们做什么?能实现什么功能?ffmpeg和openCV能实现功能,javaCV如何做到更快、更简单的实现相应的功能?等等一堆实用话题56.JavaCV音视频开发宝典:录制vp8和vp9编码的webm格式视频,以mp4转webm为例57.音视频处理、图像处理、图像识别和字符识别全能库JavaCV完整教程(包含完整JavaCV入门、JavaCV实战、ffmpeg、opencv和tesserac教程)58.JavaCV音视频开发宝典:使用JavaCV实现webm直播服务,无需流媒体服务,无需mse转封装插件(flv.js,hls.js),浏览器原生video标签直接播放rtsp,rtmp和桌面投屏直播59.JavaCV音视频开发宝典:实现Base64编码图片转换成图片文件通用转换器,以base64转png图片文件为例,其他图片格式也全部支持60.JavaCV音视频开发宝典:JavaCV读取Base64编码图片并解析预览图片61.JavaCV音视频开发宝典:使用JavaCV采集windows桌面屏幕画面并录屏mp4视频文件(FFmpeg基于dshow方式采集windows系统桌面画面)62.JavaCV音视频开发宝典:使用JavaCV采集windows系统声音并录制成mp3音频文件(FFmpeg采集windows系统声音)63.JavaCV音视频开发宝典:视频转码和转封装有什么区别?使用rtsp拉流转推到rtmp案例来讲一下转码和转封装实现的区别64.JavaCV的gpl v2许可协议排雷,写在TikTok违反GPLv2许可使用OBS源码的当下65.JavaCV音视频开发宝典:使用javacv读取GB28181、海康大华平台和网络摄像头sdk回调视频码流并转码推流rtmp流媒体服务66.JavaCV音视频开发宝典:rtsp拉流转码方式转推到rtmp67.javacv开发详解补充篇:解决转流后视频画面快进慢放,时间跳动过大,监控视频时间戳重新计算pts和dts68.JavaCV音视频开发宝典:使用JavaCV读取海康平台或海康网络摄像头sdk回调视频TS码流并解析预览图像69.JavaCV进阶opencv图像检测识别:ffmpeg视频图像画面人脸检测70.JavaCV进阶opencv图像检测识别:摄像头图像人脸检测71.javaCV文字识别之2:视频文字识别和视频提取字幕文字字符72.javaCV文字识别之1:基于google的tesserac ocr识别图片中的文字,跨平台支持英文中文简体繁体等各种字符识别73.javaCV开发详解之补充篇:根据视频时间戳同步播放图像画面以及视频倍速播放实现74.javaCV开发详解补充篇:基于avfoundation的苹果Mac和ios获取屏幕画面及录屏/截屏以及摄像头画面和音频采样获取实现75.javacpp-FFmpeg系列补充:FFmpeg拉流截图实现在线演示demo(视频截图并返回base64图像,支持jpg/png/gif/bmp等多种格式)76.javacpp-FFmpeg系列之3: 像素图像数据转换(BGR与BufferdImage互转,RGB与BufferdImage互转,BufferdImage转Base64编码)77.javacpp-FFmpeg系列补充:FFmpeg解决avformat_find_stream_info检索时间过长问题78.javacpp-FFmpeg系列之2:通用拉流解码器,支持视频拉流解码并转换为YUV、BGR24或RGB24等图像像素数据79.javacpp-FFmpeg系列之1:视频拉流解码成YUVJ420P,并保存为jpg图片80.javacpp-opencv图像处理系列:国内车辆牌照检测识别系统(万份测试车牌识别准确率99.7%以上,单次平均耗时39ms)81.javacpp-opencv图像处理3:使用opencv原生方法遍历摄像头设备及调用(增加实时帧率计算方法)82.javacpp-opencv图像处理之2:实时视频添加图片水印,实现不同大小图片叠加,图像透明度控制,文字和图片双水印83.javacpp-opencv图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体、位置、大小、粗度、翻转、平滑等操作84.javaCV图像处理之Frame、Mat和IplImage三者相互转换(使用openCV进行Mat和IplImage转换)85.java音视频编解码问题:16/24/32位位音频byte[]转换为小端序short[],int[],以byte[]转short[]为例86.音视频编解码问题:javaCV如何快速进行音频预处理和解复用编解码(基于javaCV-FFMPEG)87.JavaCV实战专栏文章目录(JavaCV速查手册)88.JavaCV复杂滤镜filter特效处理入门教程和常用案例汇总89.javacv教程文档手册开发指南汇总篇90.javacv实现实时视频截图和录像服务easyCV91.JavaCV入门指南教程目录
通过“javaCV入门指南:序章 ”大家知道了处理音视频流媒体的前置基本知识,基本知识包含了像素格式、编解码格式、封装格式、网络协议以及一些音视频专业名词,专业名词不会赘述,自行搜索即可。
本章将正式开始javaCV之旅,先看一下官方文档里的介绍
JavaCV是计算机视觉领域的开发人员(OpenCV、FFmpeg、libdc1394、PGR FlyCapture、OpenKinect、li.lsense、CL PS3 Eye Driver、videoInput、ARToolKitPlus、flandmark、Leptonica和Tesseract)常用库的JavaCPP预置的包装器,并提供实用的程序类使它们的功能更容易在Java平台上使用,包括Android。
JavaCV还提供了硬件加速的全屏图像显示(CanvasFrame和GLCanvasFrame)、在多核(并行)上并行执行代码的简便方法、照相机和投影机的用户友好的几何和颜色校准(GeometricCalibrator,ProCamometricCalibrato)r,ProCamColorCalibrator),特征点的检测和匹配(ObjectFinder),一组用于实现投影仪-照相机系统的直接图像对齐的类(主要是GNImageAligner、ProjectiveTransformer、ProjectiveColorTransformer、ProCamTransformer和ReflectanceInitializer),一个blob分析包(BLUB),以及JavaCV类中的各种功能。其中一些类还具有OpenCL和OpenGL的对应类,它们的名称以CL结尾或以GL开始,即:JavaCVCL、GLCanvasFrame等。
要了解如何使用API,因为文档目前缺乏,请参考下面的示例用法部分以及示例程序,包括两个用于Android(FACEPREVIEW.Java和ReordActudio.java)的示例程序,它们也在示例目录中找到。您可能还发现参考ProCamCalib和ProCamTracker的源代码以及从OpenCV2 Cookbook和相关联的wiki页面移植的示例很有用。
请随时告诉我任何更新或修复你的代码,使我可以将它们集成到下一个版本。谢谢您!如果您遇到软件问题,请随时在邮件列表上提问。我相信这还远远不够完美…(我觉得这个最后一段才是最重要的,所以保留了这一段原话)
既然知道javaCV封装了这么多库,也不啰嗦了,直接开始吧。
支持eguid原创文章,欢迎一起交流讨论:
流媒体技术③群: 556722677(①②群已满,请加③群)
流媒体技术①群: 371249677(已满)
一、什么是JavaCPP
大家知道FFmpeg是C语言中著名的音视频库(注意,不是c++。使用c++调用ffmpeg库的性能损失与Java方式调用损耗相差并不大)。
JavaCV利用JavaCPP在FFmpeg和Java之间构建了桥梁,我们通过这个桥梁可以方便的调用FFmpeg,当然这并不是没有损失的,性能损失暂且不提,最主要问题在于调用ffmpeg之于jvm是native方法,所以通过ffmpeg创建的结构体实例与常量、方法等等都是使用堆外内存,都需要像C那样手动的释放这些资源(jvm并不会帮你回收这部分),以此来保证不会发生内存溢出/泄露等风险。
Javapp在Java内部提供了对本地C++的高效访问,这与一些C/C++编译器与汇编语言交互的方式不同。不需要发明新的语言,比如SWIG、SIP、C++、CLI、Cython或Rython。相反,类似于CPpyy为Python所做的努力,它利用了Java和C++之间的语法和语义相似性。在引擎盖下,它使用JNI,因此除了Java、SE和RoboVM(指令)之外,它还适用于Java SE的所有实现...
详细描述请参考:https://github.com/bytedeco/javacpp
二、javaCPP直接调用FFmpeg的API
我们通过《视频拉流解码成YUVJ420P,并保存为jpg图片》作为实例来阐述,实例地址:
https://blog.csdn.net/eguid_1/article/details/81369055
这部分内容主要是如何调用FFmpeg的API,本系列作为JavaCV入门不会讲解FFmpeg的具体用法,如果想要深入学习FFmpeg部分,可以选择通过查看FFmpeg的API手册ffmpeg.org,或者访问雷霄骅的博客详细学习FFmpeg的使用。
完整阅读本章:https://blog.csdn.net/eguid_1/article/details/83663035
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
2016-11-03 javaCV开发详解之技术杂烩:javaCV能帮我们做什么?能实现什么功能?ffmpeg和openCV能实现功能,javaCV如何做到更快、更简单的实现相应的功能?等等一堆实用话题