1.javaCV 入门指南:序章2018-09-282.JavaCV 入门指南:帧抓取器 (FrameGrabber) 的原理与应用2020-06-193.JavaCV 入门指南:帧录制器 / 推流器 (FrameRecorder) 的原理与应用2020-06-194.javaCV 入门指南:调用 FFmpeg 原生 API 和 JavaCV 是如何封装了 FFmpeg 的音视频操作?2018-11-035.JavaCV 入门指南:调用 opencv 原生 API 和 JavaCV 是如何封装了 opencv 的图像处理操作?2020-06-286.JavaCV 入门指南:FrameConverter 转换工具类及 CanvasFrame 图像预览工具类(javaCV 教程完结篇)2020-06-287.JavaCV 入门指南之快速上手篇:快速上手视频拉流、推流、录制文件、录屏、截图和编解码复用解复用等常用音视频处理操作2021-01-128.javacv 开发详解之 1:调用本机摄像头视频(建议使用 javaCV 最新版本)2016-06-139.javaCV 开发详解之 2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现 (基于 javaCV-FFMPEG、javaCV-openCV)2016-09-2710.javaCV 开发详解之 3:收流器实现,录制流媒体服务器的 rtsp/rtmp 视频文件 (基于 javaCV-FFMPEG)2016-09-2711.javaCV 开发详解之 4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现 rtsp/rtmp/ 本地文件转发到 rtmp 流媒体服务器 (基于 javaCV-FFMPEG)2016-09-2812.javaCV 开发详解之 5:录制音频 (录制麦克风) 到本地文件 / 流媒体服务器(基于 javax.sound、javaCV-FFMPEG)2016-09-2913.javaCV 开发详解之 6:本地音频 (话筒设备) 和视频 (摄像头) 抓取、混合并推送 (录制) 到服务器(本地)2016-10-1314.javaCV 开发详解之 7:让音频转换更加简单,实现通用音频编码格式转换、重采样等音频参数的转换功能(以 pcm16le 编码的 wav 转 mp3 为例)2016-10-3115.javaCV 开发详解之 8:转封装在 rtsp 转 rtmp 流中的应用(无须转码,更低的资源消耗)2018-10-1216.javaCV 开发详解之 9:基于 gdigrab 的 windows 屏幕画面抓取 / 采集(基于 javacv 的屏幕截屏、录屏功能)2020-04-2617.javaCV 开发详解之 10:基于 dshow 调用 windows 摄像头视频和音频,想要获取屏幕画面首选 gdigrab2020-04-2918.javaCV 开发详解之 11:视频文件转 gif 动态图片实现,也支持摄像机、桌面屏幕、流媒体等视频源转 gif2020-06-1019.javaCV 开发详解之 12:视频转 apng 动态图片实现,支持透明通道,也支持摄像机、桌面屏幕、流媒体等视频源转 apng 动态图2020-06-1120.javaCV 开发详解之 13:简单使用 FFmpeg-Filter 过滤器处理音视频,添加特殊效果2020-06-1921.javaCV 开发详解之 14:音频重采样2020-06-1922.javaCV 开发详解之 15:视频帧像素格式转换2020-06-1923.javaCV 开发详解之 16:使用一张图片推流和一张图片录制成视频文件2020-06-2824.javaCV 开发详解之 17:GIF 和 APNG 动态图片推流和录制成视频文件(以 gif 转 mp4 和 apng 转 mp4 为例)2020-06-2825.javaCV 开发详解之 18:音视频转码(音频编解码和视频编解码)2020-07-0726.JavaCV 开发详解之 19:如何开启 GPU 硬件加速,使用 JavaCV 进行音视频的硬解码和硬编码(支持 intel、amd 和 nvidia)2020-07-0727.JavaCV 开发详解之 20:如何使用 JavaCV 制作 ico 图标,图片和视频生成 ico 图标,视频流录制 ico 图标2020-08-2528.JavaCV 开发详解之 21:如何使用 JavaCV 接入 gb28181 的 ps 流并推流到流媒体服务和接入海康大华 sdk 回调 h264/hevc 裸流2021-01-1229.JavaCV 开发详解之 22:http-flv 拉流和 http-flv 推流及 rtmp 拉流和 rtmp 推流实例和 flv 推流和 flv 录制,关于 rtmp/flv 支持 h265 补充说明2021-01-1230.JavaCV 开发详解之 23:hls 视频录制,m3u8 切片录制和 fmp4 切片录制详解2021-01-1231.JavaCV 开发详解之 24:使用 javacv 录制 dash 视频分片,mpeg-dash 视频录制,mpd 视频录制2021-01-1232.JavaCV 开发详解之 25:使用 javacv 保存 raw 视频像素格式 (yuv 或者 rgb),并使用 ffplay 播放 raw2021-01-1233.JavaCV 开发详解之 26:使用 javacv 对视频进行连续截图和覆盖截图,支持 png,jpg,bmp 等格式快速连续截图,适用于 rtsp/rtmp/flv/hls 等流媒体和本地视频快照2021-01-1234.JavaCV 开发详解之 26 补充篇:视频连续截图并按日期格式生成图片文件名称,支持 png,jpg,bmp 等格式快速连续截图2022-03-1635.JavaCV 开发详解之 27:使用 javacv 把视频切割成多个视频分片文件,以 mp4 为例,把视频切割成 MP4 分片文件2021-01-1236.JavaCV 开发详解之 28:如何使用 javacv 进行多图推流和多图合成视频文件, 以批量 jpg 图片推流 rtmp 和 jpg 合成 flv 视频文件为例2021-01-1237.JavaCV 开发详解之 29:使用 javacv 将多个视频拼接合成单个视频,多个音频拼接合成单个音频,以多个 mp4 视频合成一个 mp4 为例2021-02-0538.JavaCV 开发详解之 30:使用 javacv 拉取 rtsp 视频流,rtsp 解复用器详解。如何把 rtsp 调教的服服帖帖,让 rtsp 拉流不再丢包2021-02-0239.JavaCV 开发详解之 31:如何计算 pts/dts 时间戳,在视频转码和转复用中如何自行计算 pts/dts 时间戳2021-05-2040.JavaCV 开发详解之 32:使用 filter 滤镜实现中文字符叠加2021-07-0241.JavaCV 开发详解之 33:使用 filter 滤镜实现动态日期时间叠加2021-07-0242.JavaCV 开发详解之 34:使用 filter 滤镜实现字符滚动和无限循环滚动字符叠加,跑马灯特效制作2021-07-0243.JavaCV 开发详解之 36:使用 delogo 滤镜实现去除和屏蔽视频水印2022-11-1844.JavaCV 开发详解之 35:使用 filter 滤镜实现画中画,以屏幕画面叠加摄像头画面为例2021-07-0245.javaCV 开发详解之 GIF 动态图片录制补充篇:windows 桌面屏幕画面录制成 gif 动态图片,支持桌面屏幕任意区域生成 gif,可扩展支持 MacOS/ 安卓 /linux 等平台,可扩展支持 apng 动态图片2020-06-1146.如何在龙芯架构和国产化操作系统平台上运行 javacv2021-07-02
47.聊聊视频中的编解码器,你所不知道的 h264、h265、vp8、vp9 和 av1 编解码库2022-03-1648.JavaCV 音视频开发宝典:vb8 和 vp9 编码的 webm 格式视频文件转成 mp4 文件2022-11-1849.JavaCV 升级 1.5.6 之后遇到 h265/hevc 编码的视频无法打开编解码器 avcodec_open2() error -1:Could not open video codec 异常解决办法2022-03-1650.JavaCV 更新到 1.5.x 版本后的依赖问题说明以及如何精简依赖包大小2021-01-1451.JavaCV 音视频开发宝典:使用 JavaCV 和 springBoot 实现 websocket-flv 直播服务, 无需流媒体服务, 浏览器网页 flv.js 播放器直接播放 rtsp,rtmp 等实时视频2022-03-1752.JavaCV 音视频开发宝典:无需流媒体服务也无需转码 (低资源消耗),使用 JavaCV 和 springBoot 实现 http-flv 转封装直播服务,浏览器网页 flv.js 直接播放 rtp、rtsp、rtmp 实时视频2022-06-0153.JavaCV 音视频开发宝典:使用 JavaCV 和 springBoot 实现 http-flv 直播服务, 无需流媒体服务, 浏览器网页 flv.js 转封装方式播放 rtsp,rtmp 和桌面投屏实时画面2022-03-1754.javacv 开发详解补充篇:如何将 rgb/bgr 像素数据优雅高效的转换为 BufferedImage2021-01-1255.javaCV 开发详解之技术杂烩:javaCV 能帮我们做什么?能实现什么功能?ffmpeg 和 openCV 能实现功能,javaCV 如何做到更快、更简单的实现相应的功能?等等一堆实用话题2016-11-0356.JavaCV 音视频开发宝典:录制 vp8 和 vp9 编码的 webm 格式视频,以 mp4 转 webm 为例2022-03-1657.音视频处理、图像处理、图像识别和字符识别全能库 JavaCV 完整教程(包含完整 JavaCV 入门、JavaCV 实战、ffmpeg、opencv 和 tesserac 教程)2021-11-0858.JavaCV 音视频开发宝典:使用 JavaCV 实现 webm 直播服务, 无需流媒体服务, 无需 mse 转封装插件(flv.js,hls.js), 浏览器原生 video 标签直接播放 rtsp,rtmp 和桌面投屏直播2022-03-1659.JavaCV 音视频开发宝典:实现 Base64 编码图片转换成图片文件通用转换器,以 base64 转 png 图片文件为例,其他图片格式也全部支持2022-03-1660.JavaCV 音视频开发宝典:JavaCV 读取 Base64 编码图片并解析预览图片2022-03-1661.JavaCV 音视频开发宝典:使用 JavaCV 采集 windows 桌面屏幕画面并录屏 mp4 视频文件 (FFmpeg 基于 dshow 方式采集 windows 系统桌面画面)2022-03-1662.JavaCV 音视频开发宝典:使用 JavaCV 采集 windows 系统声音并录制成 mp3 音频文件 (FFmpeg 采集 windows 系统声音)2022-03-1663.JavaCV 音视频开发宝典:视频转码和转封装有什么区别?使用 rtsp 拉流转推到 rtmp 案例来讲一下转码和转封装实现的区别2022-03-1664.JavaCV 的 gpl v2 许可协议排雷,写在 TikTok 违反 GPLv2 许可使用 OBS 源码的当下2022-03-1665.JavaCV 音视频开发宝典:使用 javacv 读取 GB28181、海康大华平台和网络摄像头 sdk 回调视频码流并转码推流 rtmp 流媒体服务2022-03-1666.JavaCV 音视频开发宝典:rtsp 拉流转码方式转推到 rtmp2022-03-1667.javacv 开发详解补充篇:解决转流后视频画面快进慢放,时间跳动过大,监控视频时间戳重新计算 pts 和 dts2021-01-1268.JavaCV 音视频开发宝典:使用 JavaCV 读取海康平台或海康网络摄像头 sdk 回调视频 TS 码流并解析预览图像2023-06-1369.JavaCV 进阶 opencv 图像检测识别:ffmpeg 视频图像画面人脸检测2021-01-1270.JavaCV 进阶 opencv 图像检测识别:摄像头图像人脸检测2021-01-1271.javaCV 文字识别之 2:视频文字识别和视频提取字幕文字字符2020-05-1372.javaCV 文字识别之 1:基于 google 的 tesserac ocr 识别图片中的文字,跨平台支持英文中文简体繁体等各种字符识别2020-05-1373.javaCV 开发详解之补充篇:根据视频时间戳同步播放图像画面以及视频倍速播放实现2020-05-1374.javaCV 开发详解补充篇:基于 avfoundation 的苹果 Mac 和 ios 获取屏幕画面及录屏 / 截屏以及摄像头画面和音频采样获取实现2020-05-1375.javacpp-FFmpeg 系列补充:FFmpeg 拉流截图实现在线演示 demo(视频截图并返回 base64 图像,支持 jpg/png/gif/bmp 等多种格式)2018-09-2576.javacpp-FFmpeg 系列之 3: 像素图像数据转换(BGR 与 BufferdImage 互转,RGB 与 BufferdImage 互转,BufferdImage 转 Base64 编码)2018-09-1977.javacpp-FFmpeg 系列补充:FFmpeg 解决 avformat_find_stream_info 检索时间过长问题2018-09-1878.javacpp-FFmpeg 系列之 2:通用拉流解码器,支持视频拉流解码并转换为 YUV、BGR24 或 RGB24 等图像像素数据2018-09-1879.javacpp-FFmpeg 系列之 1:视频拉流解码成 YUVJ420P,并保存为 jpg 图片2018-09-1880.javacpp-opencv 图像处理系列:国内车辆牌照检测识别系统(万份测试车牌识别准确率 99.7% 以上,单次平均耗时 39ms)2017-06-1181.javacpp-opencv 图像处理 3:使用 opencv 原生方法遍历摄像头设备及调用 (增加实时帧率计算方法)2017-02-2782.javacpp-opencv 图像处理之 2:实时视频添加图片水印,实现不同大小图片叠加,图像透明度控制,文字和图片双水印2016-11-2183.javacpp-opencv 图像处理之 1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体、位置、大小、粗度、翻转、平滑等操作2016-11-2084.javaCV 图像处理之 Frame、Mat 和 IplImage 三者相互转换 (使用 openCV 进行 Mat 和 IplImage 转换)2016-11-1885.java 音视频编解码问题:16/24/32 位位音频 byte[] 转换为小端序 short[],int[],以 byte[] 转 short[] 为例2016-10-1186.音视频编解码问题:javaCV 如何快速进行音频预处理和解复用编解码(基于 javaCV-FFMPEG)2016-10-2087.JavaCV 实战专栏文章目录(JavaCV 速查手册)2021-06-2288.JavaCV 复杂滤镜 filter 特效处理入门教程和常用案例汇总2021-05-2089.javacv 教程文档手册开发指南汇总篇2020-08-2590.javacv 实现实时视频截图和录像服务 easyCV2018-10-2491.JavaCV 入门指南教程目录2021-12-03
如何将 javacv 中的 native 库编译到龙芯平台
由于我们在上一篇中已经讲到,java 在龙芯平台和国产操作系统“双剑合璧基础上的运行问题已经解决了。但是呢,javacv 依赖的 ffmpeg 和 opencv 等库都是 c/c++ 库,这些库都需要我们自行编译,所以我们还要知道如何编译这些 c/c++ 库。
而好巧不巧的是,我们在上一章中也讲了如何编译龙芯 mips 架构的 c/c++ 代码,所以我们直接跳过编译,直接讲如何打包 ffmpeg 和 opencv 就好了。
如何将 ffmpeg 和 opencv 编译到龙芯 mips 平台
由于 ffmpeg 和 opencv 都是 c/c++ 库,而 GCC4.6 以后版本都可以通过下面这种配置来编译到龙芯平台
./configure
--arch=mips
--cpu=loongson3a
ffmpeg 和 opencv 都参照这种方式编译即可。
注意:GCC4.6 以后才默认支持龙芯 3A 架构,所以请 GCC 版本较低的自行升级到最新版本即可。
按照这种方式,ffmpeg 和 opencv 打包好了,要如何将他们放入 javacv 里面呢?
我们为了简化流程,后面只用 ffmpeg 来讲。
集成龙芯版 FFmpeg 到 javacv
目前龙芯已经提供好了版本,只是用的人还太少,没有编译进主分支,所以我们需要自己把它放进去即可。
以 1.5.4 版本的 javacv 和 4.3.1 版本的 ffmpeg 为例:
新建一个 java 项目,在 org.bytedeco.ffmpeg.linux-mips64el 路径下把编译好的 ffmpeg 文件(ffmpeg、ffprobe、xxx.so),然后打包成 ffmpeg-4.3.1-1.5.4-linux-mips64el.jar 包即可。
打包后的 jar 包为: ffmpeg-4.3.1-1.5.4-linux-mips64el.jar
将这个包作为依赖放入项目中。
opencv 和其他库同样依照本方法集成。
构建龙芯版的 javacpp 到 javacv
javacpp 构建参考:https://github.com/bytedeco/javacpp-presets/wiki/Build-Environments
除此以外,还需要编译一个基于龙芯平台的 javacpp-linux-mips64el。
该步骤需要按照 javacpp 的教程进行构建,构建完得到的 javacpp-linux-mips64el.jar,同样作为依赖包放入项目中。
javacpp-linux-mips64el 只需要构建一次,不需要重复构建。
到这里为止,我们就可以在龙芯平台上运行 javacv 中有关 ffmpeg 的功能了。
如果觉得博主写得还不错,欢迎”关注、点赞、收藏“一键三连。
__EOF__