javaCV开发详解之技术杂烩:javaCV能帮我们做什么?能实现什么功能?ffmpeg和openCV能实现功能,javaCV如何做到更快、更简单的实现相应的功能?等等一堆实用话题...

news/2024/7/10 20:53:26 标签: 人工智能, ffmpeg, java

前言:

该篇文章旨在帮助刚接触javaCV的盆友系统的认识音视频、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就叫录制器


转载于:https://www.cnblogs.com/eguid/p/10195602.html


http://www.niftyadmin.cn/n/1177351.html

相关文章

Lambad表达式

目录一、函数式编程思想二、Lambda的标准格式三、练习一,抽象方法无参无返回值四、练习二,抽象方法有参无返回值五、练习三,抽象方法有参有返回值六、Lambda表达式的省略模式七、Lambda表达式的注意事项八、Lambda表达式和匿名内部类的区别一…

jQuery EasyUI使用教程之格式化组合框项

2019独角兽企业重金招聘Python工程师标准>>> 本教程向您展示如何创建一个简单的组合框,并让它在下拉框中显示图片项。您可以在组合框中使用formatter函数来告诉它如何格式化每一个条目。 jQuery EasyUI最新试用版下载请猛戳>> 点击查看示例 创建图…

能源项目xml文件 -- app-datasource.xml

<?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:context"http://www.springframework.org/schema/…

java的方法引用

目录一、方法引用二、方法引用符三、引用对象的实例方法四、引用类的实例方法五、引用构造器一、方法引用 二、方法引用符 代码演示&#xff1a; 接口&#xff1a; package 引用方法;public interface Converter {int convert(String s); }实现类&#xff1a; package 引用方…

Web APP 随笔

自Iphone和Android这两个牛逼的手机操作系统发布以来&#xff0c;在互联网界从此就多了一个新的名词-WebApp(意为基于WEB形式的应用程序&#xff0c;运行在高端的移动终端设备)。 开发者们都知道在高端智能手机系统中有两种应用程序&#xff1a;一种是基于本地&#xff08;操作…

时间管理文档规范

时间管理文档规范 备忘录 备忘录用来记录自己的心得体会感悟&#xff0c;可以用来写博客&#xff0c;做笔记、收集灵感等&#xff0c;比如我的 人文情怀行业视角技术 JAVA后台iOS客户端前端移动端大数据热工智能脚本语言Linux灵感与梦想GTD 时间管理 收集 任务灵感之类的东西要…

一、操作系统引论

目录一、操作系统的概念&#xff0c;功能和目标学习思路1.操作系统的概念2.操作系统的功能和目标(1)、作为系统资源的管理者(2)、作为用户和计算机硬件之间的接口(3)、作为最接近硬件的层次二、操作系统的四个特征1.并发2.共享并发和共享的关系3.虚拟4.异步三、操作系统的发展与…

wordpress配置通过IP直接访问及apache的配置

wordpress配置通过IP直接访问环境&#xff1a;操作系统&#xff1a;centos6.5yum安装lamp环境&#xff1a;yum -y install mysql mysql-server php php-mysql httpd php-gd* freetype freetype-devel libmcrypt libmcrypt-devel mcrypt mhash php-mcryptapache版本&#xff1a;…