javaCV开发详解之技术杂烩:javaCV能帮我们做什么?能实现什么功能?ffmpeg和openCV能实现功能,javaCV如何做到更快、更简单的实现相应的功能?等等一堆实用话题
前言:
序:
javaCV早期因为内置了openCV库,所以常用来做图像识别应用,现在网上一搜一大把的就是这种应用场景下的javaCV教程,在这里就不多讲这一块知识了。
这里我们将围绕Frame类系统的讨论javaCV能帮我们做什么?能实现什么功能?ffmpeg和openCV能实现的功能,使用javaCV如何做到更快、更简单的实现相应的功能。
补充:javaCV之所以叫javaCV就是因为openCV而得名,所以javaCV在图像处理上的能力等同于openCV,但在视频处理上要比openCV好,因为javaCV内置了7个视觉库,ffmpeg和opencv只是其中两个,而我们常用的也就是这两个库,另外5个库暂时用不到。
1、javaCV操作流程汇总:
javaCV一般的操作流程只有两步:抓取->(Frame)->录制
抓取包含一些初始化操作,文件或者网络流数据源获取,查找解码器等等操作
录制包含解复用、编码、输出、释放资源等等操作
大家可能有些疑惑了,封装成这样,抓取后我要对音视频源数据进行调整怎么办?而且这个经常会用到
所以我们应该调整一下补充一下我们的流程,我们的流程应该在录制之前进行处理这个Frame对象。
2、关于对Frame对象的联想
Frame类在javaCV里面很重要。Frame对象作为数据容器,可以存放一帧视频数据、一堆视频参数和多个通道的音频数据、音频参数(补充:这里的多通道也就是支持多路音频组装的意思,多路音频算是复杂场景了吧;下面也会讲到复杂视频场景,画中画,多画面组装,文字、图像、动态水印等等)
2.1、抓取后的Frame对象使用
既然是一个容器,那么当我们使用grabber(抓取器)抓取音/视频的时候自然也就可以从这里面获取想要的的数据。
补充:抓取,通过grabber从本地视频文件,摄像头视频,rtp/rtsp/rtmp等等获取视频源的这个动作统称为:抓取,我们完成这个操作的类叫做抓取器,这是个很形象的翻译,也很好理解。
比如我们需要给抓取到的视频加个水印,或者抓取两个视频,进行合并(至于怎么合并咱先不管这个),而这些操作都不需要直接从frame中获取数据源,而是直接通过javacv-opencv来帮助我们调整每一帧视频,这时候还没有开始解复用编码的操作,详细的内容不在这里赘述,javaCV开发详解的系列文章中有提到该块内容。
补充:java本身是支持图像相关操作的,可以添加水印之类的还是可以实现的
3、关于字节流的处理
一般移动端设备在进行推流的时候不会直接推送到流媒体服务器,而是推送一个字节流,我们需要将这个字节流在服务器做一个中转然后由中转服务器推送到流媒体服务器
之前我们讲了Frame是一个容器,那么自然可以放音视频数据。在Frame中设置好你的音视频参数,就可以通过recorder(录制器)到流媒体服务器了
补充:录制,我们把音视频数据解复用,编码和推送到流媒体服务器的动作称为录制,为方便理解这里的recorder就叫录制器
javaCV开发详解之技术杂烩:javaCV能帮我们做什么?能实现什么功能?ffmpeg和openCV能实现功能,javaCV如何做到更快、更简单的实现相应的功能?等等一堆实用话题的更多相关文章
- javaCV开发详解之12:视频转apng动态图片实现,支持透明通道,也支持摄像机、桌面屏幕、流媒体等视频源转apng动态图
wjavaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG. ...
- javaCV开发详解之7:让音频转换更加简单,实现通用音频编码格式转换、重采样等音频参数的转换功能(以pcm16le编码的wav转mp3为例)
javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...
- javaCV开发详解之6:本地音频(话筒设备)和视频(摄像头)抓取、混合并推送(录制)到服务器(本地)
javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...
- javaCV开发详解之5:录制音频(录制麦克风)到本地文件/流媒体服务器(基于javax.sound、javaCV-FFMPEG)
javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...
- javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)
javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...
- javaCV开发详解之3:收流器实现,录制流媒体服务器的rtsp/rtmp视频文件(基于javaCV-FFMPEG)
javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...
- javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG、javaCV-openCV)
javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...
- javacv开发详解之1:调用本机摄像头视频(建议使用javaCV1.3版本)
javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...
- javaCV开发详解之8:转封装在rtsp转rtmp流中的应用(无须转码,更低的资源消耗)
javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...
随机推荐
- java线程的实现
一共有两种方法Thread类和Runnable接口,相对来讲,更趋向于用Runnable因为一个类可以实现多个接口,但是只能继承一个类,所以相对来说倾向用Runnable 第一种方法:用Thread其 ...
- 跟Microsoft.AspNet.Identity学习哈希加盐法
什么是哈希加盐法? 废话少说:对于MD5这种加密算法,同样的密码每次加密后得到的密文是一样的,所以黑客可以利用已知的密码库(彩虹库)对目标数据库密文进行对比进行攻击. 怎样解决:哈希加盐法,以下是网上 ...
- Html5浏览器支持
HTML5 浏览器支持 把 HTML5 元素定义为块级元素 语义块级displayblock实例 header, section, footer, aside, nav, main, article, ...
- 在SOUI中支持高分屏显示
和手机屏幕一样,高分屏在PC上使用越来越多.传统的桌面程序都是像素为单位进行UI布局,而且是适配传统的96dpi的显示器的.这就导致这些程序在高分屏上显示很小,用户用起来很难受. 虽然windows系 ...
- hadoop单机环境搭建
[在此处输入文章标题] Hadoop单机搭建 1. 工具准备 1) Hadoop Linux安装包 2) VMware虚拟机 3) Java Linux安装包 4) Window 电脑一台 2. 开始 ...
- Docker - 终端交互
进入容器交互终端 使用docker attach命令进入容器交互终端. 注意:如果多个窗口同时attach到同一个容器,那么所有窗口都会同步显示.如果某个窗口因命令阻塞时,那么其他窗口将无法执行操作. ...
- 《快学Scala》——控制结构和函数
条件表达式 在Scala中if/else表达式有值,这个值就是跟在if或else之后的表达式的值.例如: if (x > 0) 1 else -1 上述表达式的值是1或-1,具体是哪一个取决于x ...
- poj2185 Milking Grid
题目链接:http://poj.org/problem?id=2185 这道题我看了好久,最后是通过参考kuangbin的博客才写出来的 感觉next数组的应用自己还是掌握的不够深入 这道题其实就是先 ...
- ——————————JavaScript中,对String字符串的一些操作——————————
————————————————————————————————————————————————————————————————————————————————————————————— <ht ...
- 【WPF】三维模型中的“照相机”
WPF 部分支持三维模型,为啥说是部分支持?毕竟 WPF 的侧重点还是在应用开发上,虽然也有些游戏是用 WPF 开发的,不过,老周想啊,如果真要开发游戏,最好用专门的框架,WPF 应当用于开发应用功能 ...