【java】使用opencv获取摄像头并推流

news/2024/4/24 8:28:24/文章来源:https://www.cnblogs.com/fireblackman/p/16620061.html

1、环境

OSX 12.5

Java8

vscode

 

2、脚本

JavaCvCameraTest.java
import javax.swing.JFrame;import org.bytedeco.ffmpeg.global.avcodec;
import org.bytedeco.javacpp.Loader;
import org.bytedeco.javacv.*;
import org.bytedeco.opencv.global.opencv_objdetect;
import org.bytedeco.opencv.opencv_core.IplImage;public class JavaCvCameraTest
{public static void recordCamera(String outputFile, double frameRate)throws Exception, InterruptedException {Loader.load(opencv_objdetect.class);FrameGrabber grabber = FrameGrabber.createDefault(0);//本机摄像头默认0,这里使用javacv的抓取器,至于使用的是ffmpeg还是opencv,请自行查看源码grabber.start();//开启抓取器
OpenCVFrameConverter.ToIplImage converter = new OpenCVFrameConverter.ToIplImage();//转换器IplImage grabbedImage = converter.convert(grabber.grab());//抓取一帧视频并将其转换为图像,至于用这个图像用来做什么?加水印,人脸识别等等自行添加int width = grabbedImage.width();int height = grabbedImage.height();FrameRecorder recorder = FrameRecorder.createDefault(outputFile, width, height);recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264); // avcodec.AV_CODEC_ID_H264,编码recorder.setFormat("flv");//封装格式,如果是推送到rtmp就必须是flv封装格式
        recorder.setFrameRate(frameRate);recorder.start();//开启录制器long startTime=0;long videoTS=0;CanvasFrame frame = new CanvasFrame("camera", CanvasFrame.getDefaultGamma() / grabber.getGamma());frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setAlwaysOnTop(true);Frame rotatedFrame=converter.convert(grabbedImage);//不知道为什么这里不做转换就不能推到rtmpwhile (frame.isVisible() && (grabbedImage = converter.convert(grabber.grab())) != null) {rotatedFrame = converter.convert(grabbedImage);frame.showImage(rotatedFrame);if (startTime == 0) {startTime = System.currentTimeMillis();}videoTS = 1000 * (System.currentTimeMillis() - startTime);recorder.setTimestamp(videoTS);recorder.record(rotatedFrame);Thread.sleep(40);}frame.dispose();recorder.stop();recorder.release();grabber.stop();}public static void main(String[] args) throws Exception, InterruptedException {recordCamera("rtmp://192.168.10.225:1935/stream/example",25); //推流到rtmp服务器
    }}

 

 

 

3、pom.xml相关依赖

    <dependencies><dependency><groupId>org.bytedeco</groupId><artifactId>javacv-platform</artifactId><version>1.5.7</version></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>javacpp</artifactId><version>1.5.7</version></dependency></dependencies>

调用摄像头需要权限,mac需要配置允许vscode

 

 

参考链接:

https://answers.opencv.org/question/225281/videocapture-0-does-not-work-in-mac-catalina-the-program-crashed/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_2613.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解析 RocketMQ 业务消息--“顺序消息”

本篇将继续业务消息集成的场景,从功能原理、应用案例、最佳实践以及实战等角度介绍 RocketMQ 的顺序消息功能。作者:绍舒 引言 Apache RocketMQ 诞生至今,历经十余年大规模业务稳定性打磨,服务了阿里集团内部业务以及阿里云数以万计的企业客户。作为金融级可靠的业务消息方…

C# 读取MotherBoard的信息

通过C# 来读取PC 的MotherBoard 上的信息,如 产品名称,制造商,版本等,方法如下:Reference中添加 System.Management,并在头文件中引入该 Assemble 添加对应的类,并进行使用,如下实例:public static class MotherBoardInfo{private static ManagementObjectSearcher …

万物皆可集成系列:低代码释放用友U8+深度价值(2)—数据拓展应用

在上一篇内容我们介绍了如何利用低代码开发套件实现低代码应用与U8+系统的对接集成,本次给大家带来的是如何将用友U8+系统中的数据进行价值扩展和实际应用。 我们以生产物料齐套分析为例来说明如何利用低代码将U8+系统中的系统进行扩展和应用。在开始之前,先来看看什么是生产…

java数据类型转换问题

我们知道java中的各个数据类型的取值范围不同,可以理解成容量大小,而针对容量大小可以对他们进行一个由低到高的排序,也就是优先级。 优先级 低-----------------------------------------------------------------------高 (byte,short,char)=> int => long => …

记esxi linux主机调整分区大小

调整前效果:调整后效果: 方法如下: 工具:VMware vCenter Converter

顶象为飞凡汽车App提供全方位防护 助力新能源汽车发展

汽车App集展示、体验、交互、交易和远程服务于一身,已成为智能汽车的一部分。日前,飞凡汽车与顶象达成合作,为飞凡汽车App提供安全加固服务,为用户提供全方位的安全保障。 用户眼里的“宝藏App” 每个智能汽车都有一个App,大多数将其当做车的附加服务,飞凡汽车把App当做汽…

Fecify 跨境电商系统,有哪些优势?

独立站是最近几年重新火爆起来的跨境电商经营方式。人都喜欢一切都掌握在自己手里的感觉,而独立站的好处就是自己说了算,足够自由。因为可以自己说了算,风险自己把控,自己做的事情,自己负责,独立站的这些自主特性深受货代人的喜爱。独立站以其独立自主的特性,引领未来跨…

删除RAID

场景 当服务器不需要RAID或重新配置RAID时,要先删除当前RAID配置来释放硬盘。 LSI SAS2208 (Legacy/Dual) 操作步骤 步骤1 通过远程虚拟控制台登录到服务器的实时操作桌面。 步骤2 登录CU管理界面。 步骤3 备份删除RAID中的数据。 步骤4 删除RAID。 1. 在CU主界面左侧区域中选…

HTML基础(二):标签学习

html学习笔记排版标签 标题标签场景:在新闻和文章的页面中,都离不开标题,用来突出显示文章主题代码:h系列标签<h1>1级标题</h1> <h2>2级标题</h2> <h3>3级标题</h3> <h4>4级标题</h4> <h5>5级标题</h5> <h…

电商行业:全链路监测广告投放效果,用数据驱动业务增长

哪个营销任务、营销渠道的引流用户更多? 买量用户的活跃、留存情况如何? 哪个营销任务引流的用户后续的加购、下单转化最多? HMS Core分析服务作为广告转化跟踪工具,广告主可实现从“曝光、点击、下载、激活、注册、留存、收藏、加入购物车、下单、开始结算、支付成功、复购…

35. Redis---缓存问题

1. 前言 在实际的业务场景中,Redis 一般和其他数据库搭配使用,用来减轻后端数据库的压力,比如和关系型数据库 MySQL 配合使用。Redis 会把 MySQL 中经常被查询的数据缓存起来,比如热点数据,这样当用户来访问的时候,就不需要到 MySQL 中去查询了,而是直接获取 Redis 中的…

面试突击77:Spring 依赖注入有几种?各有什么优缺点?

IoC 和 DI 是 Spring 中最重要的两个概念,其中 IoC(Inversion of Control)为控制反转的思想,而 DI(Dependency Injection)依赖注入为其(IoC)具体实现。那么 DI 实现依赖注入的方式有几种?这些注入方式又有什么不同?接下来,我们一起来看。 0.概述 在 Spring 中实现依…

[AcWing 167] 木棒

DFS 剪枝点击查看代码 #include<bits/stdc++.h>using namespace std;typedef long long LL;const int N = 1e6 + 10;int n; int w[N]; int sum, len; bool st[N];bool dfs(int u, int s, int start) {if (u * len == sum)return true;if (s == len)return dfs(u + 1, 0, …

Word修订内容批量标红

Word修订标红Plus,适用于科研狗最近改文章,期刊要求提供所有修改内容都标红的修订稿,本着能不手改就不手改的原则,我尝试检索了一下自动修改的方法,最先找到的是简书上的一篇使用VB宏命令批量修改的文章 (Word-接受全部修订为标红字体),但是尝试之后发现运行时间很长,且…

《GB27607-2011》PDF下载

《GB27607-2011 机械压力机 安全技术要求》PDF下载 《GB27607-2011》简介本标准规定了机械压力机类产品的设计、制造、改造、使用的术语和定义、严重危险、安全要求和(或)措施、检验和使用信息; 本标准适用于压力机及作为压力机组成部分的辅助设备的设计、制造、改造和使用,也…

二进制位运算

二进制位运算基础及其应用: 一、基本位运算符: 1.& 按位与:(从左到右)二进制中对应位都是1则为1,否则为0; 2. | 按位或:(从左到右)二进制中对应位有一个是1则为1,否则为0; 3. ^按位异或:(从左到右)二进制中对应位相同则为0,不同为1; 4. <<左移:右侧…

《GB27887-2011》PDF下载

《GB27887-2011 机动车儿童乘员用约束系统》PDF下载 《GB27887-2011》简介 本标准规定了机动车儿童乘员用约束系统术语、定义,在车辆上的安装及固定要求,约束系统的结构,以及对约束系统总成及其组成部件的性能要求和试验方法;本标准适用于适合安装在三个车轮或三个车轮以上…

JS基础:数组、函数、对象

字符串要用英文双引号括起来。字符串与其他类型数据之间用加号+连接起来 // -------------------------------------------------------- JS中定义声明变量是用关键字var,JS中变量名函数名都可以用中文。 JS中定义数组不用写函数长度[],JS中可以定义字符串数组向数组添加新元…

《GB12523-2011》PDF下载

《GB12523-2011 建筑施工场界环境噪声排放标准》PDF下载 《GB12523-2011》简介本标准规定了建筑施工场界环境噪声排放限值及测定方法; 本标准适用于周围有噪声敏感建筑物的建筑施工噪声排放的管理、评价及控制。市政、通信、交通、水利等其他类型的施工噪声排放可参照本标准执…

CATIA——什么是汽车设计硬点和骨架?

什么是汽车设计「硬点」? 汽车设计硬点(Hard point)的概念: 所谓硬点,是通过英文的"hardpoint"直译过来的。 由于零部件设计要在整车总布置基本完成后才开始,在总布置设计阶段中往往没有零部件的详细资料,还不能解决零部件和总成内部的细节问题。所以在布置设…