JavaCV的摄像头实战之五:推流

欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

本篇概览

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

    来源:程序员欣宸

    声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年11月1日
下一篇 2021年11月1日

相关推荐