欢迎访问我的GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
本篇概览
- 本文是《JavaCV的摄像头实战》的第五篇,一起来考虑个问题:本地摄像头的内容,如何让网络上的其他人看见/li>
- 这就涉及到了推流,如下图,基于JavaCV的应用将摄像头的视频帧推送到媒体服务器,观看者用播放器软件远程连接媒体服务器,就能观看摄像头的内容了:
- 新建文件RecordCamera.java,这是AbstractCameraApplication的子类,其代码很简单,接下来按上图顺序依次说明
- 《JavaCV的摄像头实战之一:基础》中已部署好了媒体服务器,这里定义一个成员变量保存媒体服务器的推流地址,请您按自己的情况调整:
- 还要准备一个成员变量,推流的时候在帧上添加时间戳:
- 将视频帧推送到媒体服务器的功能来自FrameRecorder,这是个抽象类,本篇用到的是其子类FFmpegFrameRecorder,所以定义FrameRecorder类型的成员变量:
- 然后是初始化操作,请注意各项参数设置(1280*720分辨率摄像头的情况):
- 接下来是output方法,关键是recorder.record,另外要注意时间戳的计算和设置:
- 最后是处理视频的循环结束后,程序退出前要做的事情,即关闭帧抓取器:
- 另外还要注意两帧之间的延时,由于推流涉及到网络,因此不能像本地预览那样根据帧率严格计算,实际间隔要更小一些:
- 至此,推流功能已开发完成,再写上main方法,注意参数600表示抓取和录制的操作执行600秒:
- 运行main方法,等到控制台输出下图红框的内容时,表示已经开始推流:
- 还可用VLC的工具查看编码信息:
- javacv-tutorials里面有多个子工程,《JavaCV的摄像头实战》系列的代码在simple-grab-push工程下:
程序员欣宸 微信公众号 Java程序员来源:程序员欣宸
声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!