java摄像头推流_悄摸直播(一)—— 推流器的实现(获取笔记本摄像头画面,转流推流到rtmp服务器)...
推流器
一、功能说明
获取pc端的摄像头流数据 + 展示直播效果 + 推流到rtmp服务器
二、代码实现
/**
* 推流器
* @param devicePath 摄像头的地址。可以是摄像头rtsp地址,也可以是设备号码,本机摄像头是0
* @param outputPath 接收路径
* @param v_rs 帧率
* @throws Exception
* @throws org.bytedeco.javacv.FrameRecorder.Exception
* @throws InterruptedException
*/
public static void recordPush(String outputPath,int v_rs) throws Exception, org.bytedeco.javacv.FrameRecorder.Exception, InterruptedException {
Loader.load(opencv_objdetect.class);
//创建采集器
OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0); //本地摄像头默认为0
//开启采集器
try {
grabber.start();
} catch (Exception e) {
try {
grabber.restart(); //一次重启尝试
} catch (Exception e2) {
throw e;
}
}
OpenCVFrameConverter.ToIplImage converter = new OpenCVFrameConverter.ToIplImage(); //转换器
Frame grabframe = grabber.grab(); //获取一帧
IplImage grabbedImage = null;
if (grabframe!=null) {
grabbedImage = converter.convert(grabframe); //将这一帧转换为IplImage
}
//创建录制器
FrameRecorder recorder;
recorder = FrameRecorder.createDefault(outputPath, 1280, 720); //输出路径,画面高,画面宽
recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264); //设置编码格式
recorder.setFormat("flv");
recorder.setFrameRate(v_rs);
recorder.setGopSize(v_rs);
//开启录制器
try {
recorder.start();
} catch (java.lang.Exception e) {
System.out.println("recorder开启失败");
System.out.println(recorder);
try {
if (recorder != null) { //尝试重启录制器
recorder.stop();
recorder.start();
}
} catch (java.lang.Exception e1) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//直播效果展示窗口
CanvasFrame frame = new CanvasFrame("直播效果",CanvasFrame.getDefaultGamma() / grabber.getGamma());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setAlwaysOnTop(true);
//推流
while(frame.isVisible() && (grabframe=grabber.grab()) != null) {
frame.showImage(grabframe); //展示直播效果
grabbedImage = converter.convert(grabframe);
Frame rotatedFrame = converter.convert(grabbedImage);
if (rotatedFrame != null) {
recorder.record(rotatedFrame);
}
Thread.sleep(50); //50毫秒/帧
}
}
三、测试推流器
public static void main(String[] args) throws Exception, org.bytedeco.javacv.FrameRecorder.Exception, InterruptedException {
//设置rtmp服务器地址
String outputPath = "rtmp://192.168.1.48:1935/live/stream";
recordPush(outputPath, 25);
}
如果出现“直播效果”的swing窗口,并能够播放摄像头画面,则说明推流器成功。
java摄像头推流_悄摸直播(一)—— 推流器的实现(获取笔记本摄像头画面,转流推流到rtmp服务器)...相关推荐
- java asynctask完成_如何传递参数并从AsyncTask类中获取结果?
我想要做的就是使用AsyncTask来执行http请求 . 这是我的代码到目前为止,但我不知道如何从我的主要活动中调用此类以及如何获得结果 . 我有一个String var"uri" ...
- linux获取笔记本摄像头视频,如何在windows下用ffmpeg抓取笔记本电脑摄像头视频
我有一个很小的python程序,它可以很好地使用ffmpeg的子进程从linux中的网络摄像头(至少对于有内置网络摄像头的笔记本电脑)捕获短视频.在 现在我正试图编写同样的程序来捕捉windows中的 ...
- 摄像头视频推流python_python中用FFmpeg向rtmp服务器推流,实现摄像头直播
一.目的 从OpenCV中读取帧后,一方面对帧进行其他处理,同时把获取的帧推送到rtmp服务器实现直播. 二.docker中搭建rtmp服务器 本文忽略如何安装docker,docker的命令等. ( ...
- excel打不开怎么修复_笔记本摄像头打不开怎么修复?网友:这操作真香!
笔记本摄像头是笔记本硬件设备中一个非常重要的组成部分,用户使用摄像头可以视频聊天,拍摄相关的视频等,如果 笔记本摄像头打不开该怎么办呢?下面就来看看笔记本摄像头打不开怎么修复! 1.首先鼠标右击电脑, ...
- Java反射机制(反射Field,Method,Constructor,资源绑定器)
目录 反射机制 1.反射机制的作用 2.反射机制的相关类在哪个包下 3.反射机制的相关类有哪些 获取Class的三种方式 通过反射实例化对象 通过读属性文件实例化对象 只让静态代码块执行可以使用for ...
- java web 流媒体播放_实时流(直播流)播放、上墙(大屏播放)解决方案
场景描述 将实时流采集终端的视频数据实时推送到另外一个(多个)播放终端,完成远距离实时视频播放的功能.典型场景: (1)远程查看监控摄像头.选择指定摄像头,将该摄像头采集到的实时数据推送到指定播放终端 ...
- java 摄像头 win7_Win7系统下JAVA摄像头调用_实例代码介绍
Win7系统下JAVA摄像头调用_实例代码介绍.由于要搞个人脸识别登录(JAVACV),百度谷歌了一下午,找了网上简单的样例代码来试,可是老是调试不过,出现CaptureDeviceManager.g ...
- obs 推流编码在哪设置_有品直播竖屏OBS推流教程
推流设备准备 1.电脑:Windows系统,最好用台式机直播,笔记本不要用轻薄款,用游戏本.处理器intel i5及以上,最好i7,独立显卡,固态硬盘. (注意,电脑硬件配置过低时,可能导致画面卡顿或 ...
- android rtmp推流_器材测评|如何使用OBS进行直播导播和推流,OBS推流使用全详解!...
因为疫情,全国人民都被困在了家中,开学.复工都按下了×0.5倍速键.在这个特殊的时间段,社区的活动也都转为了线上直播的形式.直播听起来毫无技术门槛,是真的吗? 实际上,为了保证直播的顺利进行,需要有专 ...
最新文章
- c++和java哪个难_前端和Java开发哪个难?哪个学习容易一点?
- 介绍一个欧神写的剪贴板多端同步神器
- Electron - 创建跨平台的桌面客户的应用程序
- [剑指offer]面试题42:翻转单词顺序 VS左旋转字符串
- 梯形图 c语言代码生成,PLC梯形图中内嵌C语言编程的实现
- 转: ADO Connection Strings
- Nginx日志配置详解
- fastjson和json-lib的区别
- 微信官方回应iOS 13.2频繁杀后台问题:建议先不升级
- 敏捷开发系列学习总结(17)——团队需要Scrum Master做这六件事
- oracle脚本转mpp脚本,范本:使用expdp/impdp克隆生成一个新数据库
- weblogic 部署应用步骤
- ROS教程之使用UVC摄像头
- 2022年小红书活跃用户画像报告:7大行业核心人群解析
- Dva员工增删改查Demo实现-优化
- Python:7-1 温度转换 (6分)
- 关闭 c4244_秀刻开放注册锁粉;天天有鱼推基金认筹;智慧云开放交易;五子登科开放交易;火艺短视频开放交易;购视界改制;等会儿短视频关闭交易;...
- python 喜马拉雅_Python爬虫:喜马拉雅FM
- unity 使用超椭圆方程对图片进行裁切制作圆角矩形
- int, long, long long类型的范围
热门文章
- php5.4 mysql connect,php5.4 Call to undefined function mysql_connect()
- Random:产生随机数的类
- Python游戏开发,Pygame模块,Python从零开始带大家实现魔塔小游戏
- java接口如何定义常量 c_在Java接口中怎样访问定义的常量呢?
- python去实现链表_python实现链表
- 是vans_你知道VANS有哪些好鞋不贵系列?
- 二叉树的深度_Golang面试题:二叉树的最大深度
- java pdf转swf_pdf转换成swf的代码
- 安装 Homebrew
- C#做的在线升级小程序