推流器

一、功能说明

获取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服务器)...相关推荐

  1. java asynctask完成_如何传递参数并从AsyncTask类中获取结果?

    我想要做的就是使用AsyncTask来执行http请求 . 这是我的代码到目前为止,但我不知道如何从我的主要活动中调用此类以及如何获得结果 . 我有一个String var"uri" ...

  2. linux获取笔记本摄像头视频,如何在windows下用ffmpeg抓取笔记本电脑摄像头视频

    我有一个很小的python程序,它可以很好地使用ffmpeg的子进程从linux中的网络摄像头(至少对于有内置网络摄像头的笔记本电脑)捕获短视频.在 现在我正试图编写同样的程序来捕捉windows中的 ...

  3. 摄像头视频推流python_python中用FFmpeg向rtmp服务器推流,实现摄像头直播

    一.目的 从OpenCV中读取帧后,一方面对帧进行其他处理,同时把获取的帧推送到rtmp服务器实现直播. 二.docker中搭建rtmp服务器 本文忽略如何安装docker,docker的命令等. ( ...

  4. excel打不开怎么修复_笔记本摄像头打不开怎么修复?网友:这操作真香!

    笔记本摄像头是笔记本硬件设备中一个非常重要的组成部分,用户使用摄像头可以视频聊天,拍摄相关的视频等,如果 笔记本摄像头打不开该怎么办呢?下面就来看看笔记本摄像头打不开怎么修复! 1.首先鼠标右击电脑, ...

  5. Java反射机制(反射Field,Method,Constructor,资源绑定器)

    目录 反射机制 1.反射机制的作用 2.反射机制的相关类在哪个包下 3.反射机制的相关类有哪些 获取Class的三种方式 通过反射实例化对象 通过读属性文件实例化对象 只让静态代码块执行可以使用for ...

  6. java web 流媒体播放_实时流(直播流)播放、上墙(大屏播放)解决方案

    场景描述 将实时流采集终端的视频数据实时推送到另外一个(多个)播放终端,完成远距离实时视频播放的功能.典型场景: (1)远程查看监控摄像头.选择指定摄像头,将该摄像头采集到的实时数据推送到指定播放终端 ...

  7. java 摄像头 win7_Win7系统下JAVA摄像头调用_实例代码介绍

    Win7系统下JAVA摄像头调用_实例代码介绍.由于要搞个人脸识别登录(JAVACV),百度谷歌了一下午,找了网上简单的样例代码来试,可是老是调试不过,出现CaptureDeviceManager.g ...

  8. obs 推流编码在哪设置_有品直播竖屏OBS推流教程

    推流设备准备 1.电脑:Windows系统,最好用台式机直播,笔记本不要用轻薄款,用游戏本.处理器intel i5及以上,最好i7,独立显卡,固态硬盘. (注意,电脑硬件配置过低时,可能导致画面卡顿或 ...

  9. android rtmp推流_器材测评|如何使用OBS进行直播导播和推流,OBS推流使用全详解!...

    因为疫情,全国人民都被困在了家中,开学.复工都按下了×0.5倍速键.在这个特殊的时间段,社区的活动也都转为了线上直播的形式.直播听起来毫无技术门槛,是真的吗? 实际上,为了保证直播的顺利进行,需要有专 ...

最新文章

  1. c++和java哪个难_前端和Java开发哪个难?哪个学习容易一点?
  2. 介绍一个欧神写的剪贴板多端同步神器
  3. Electron - 创建跨平台的桌面客户的应用程序
  4. [剑指offer]面试题42:翻转单词顺序 VS左旋转字符串
  5. 梯形图 c语言代码生成,PLC梯形图中内嵌C语言编程的实现
  6. 转: ADO Connection Strings
  7. Nginx日志配置详解
  8. fastjson和json-lib的区别
  9. 微信官方回应iOS 13.2频繁杀后台问题:建议先不升级
  10. 敏捷开发系列学习总结(17)——团队需要Scrum Master做这六件事
  11. oracle脚本转mpp脚本,范本:使用expdp/impdp克隆生成一个新数据库
  12. weblogic 部署应用步骤
  13. ROS教程之使用UVC摄像头
  14. 2022年小红书活跃用户画像报告:7大行业核心人群解析
  15. Dva员工增删改查Demo实现-优化
  16. Python:7-1 温度转换 (6分)
  17. 关闭 c4244_秀刻开放注册锁粉;天天有鱼推基金认筹;智慧云开放交易;五子登科开放交易;火艺短视频开放交易;购视界改制;等会儿短视频关闭交易;...
  18. python 喜马拉雅_Python爬虫:喜马拉雅FM
  19. unity 使用超椭圆方程对图片进行裁切制作圆角矩形
  20. int, long, long long类型的范围

热门文章

  1. php5.4 mysql connect,php5.4 Call to undefined function mysql_connect()
  2. Random:产生随机数的类
  3. Python游戏开发,Pygame模块,Python从零开始带大家实现魔塔小游戏
  4. java接口如何定义常量 c_在Java接口中怎样访问定义的常量呢?
  5. python去实现链表_python实现链表
  6. 是vans_你知道VANS有哪些好鞋不贵系列?
  7. 二叉树的深度_Golang面试题:二叉树的最大深度
  8. java pdf转swf_pdf转换成swf的代码
  9. 安装 Homebrew
  10. C#做的在线升级小程序