javacv实现实时视频截图和录像服务easyCV
本项目维护于github:https://github.com/eguid/easyCV
1、介绍
本项目基于javaCV1.4.x。
其中实现了
(1)实时视频截图服务(支持rtsp/rtmp/http-flv/hls/file等视频源),图片保存格式支持png/jpeg/jpg/gif等等,支持base64和图片保存两种方式,同时支持两种同时保存/返回。
(2)视频录像服务支持rtsp/rtmp/http-flv/hls/file等实时视频或文件录像,支持手动暂停和恢复录制,支持手动开始和结束录制,支持保存mp4/flv/mkv/avi等等录像视频,配合http/ftp服务可以实现在线点播。
(3)web服务使用springboot,仅作为demo使用,并没有实现持久化;截图的base64数据和历史记录保存在Map中,图片文件保存在指定路径;录像历史记录保存在map中,文件保存在硬盘。
截图wbe服务使用8081端口,录像默认使用8082端口。
通过访问ip:port/test测试截图和录像,通过ip:post/查看截图录像历史列表(可查看截图,点播录像视频,需要配置http点播服务)
2、实现原理
(1)截图服务直接使用了javacpp-ffmpeg方式,解决了javaCV的FFmpegGrabber在检索实时视频信息时导致的阻塞问题,同时优化了ByteOutputStream和Base64的转换性能。
(2)录像服务直接使用了javaCV方式,通过实现的固定大小的线程池来提升资源复用率,转封装情况下解决了FFmpegRecorder下推流至rtmp的pts为空的bug。
线程池实现:通过录制器绑定线程方式,在manager层实现了录制器对象池来实现线程复用,录制器作为线程控制器来控制工作线程的开始、暂停、恢复,结束录像的操作。
管理器--->固定大小对象池--->录制器--->工作线程
javacv实现实时视频截图和录像服务easyCV的更多相关文章
- SDL 截图、录像、录像播放
截图 使用sdl很简单,视频显示窗口大小,不是视频分辨率大小 int i = Sdl.SDL_SaveBMP(surfacePtr, path); if(i != 0) { MessageBox.Sh ...
- 使用javacv录像,同时进行讯飞声纹认证
由于最近的demo中需要在活体检测的同时进行音视频录制 , 尝试使用MediaRecord和camera来录制视频 , 然而Camera.onPreviewFrame 不能与 MediaRecord ...
- Windows Azure案例分析: 选择虚拟机或云服务?
作者 王枫 发布于2013年6月27日 随着云计算技术和市场的日渐成熟,企业在考虑IT管理和运维时的选择也更加多样化,应用也从传统部署方式,发展为私有云.公有云.和混合云等部署方式.作为微软核心的公有 ...
- ssl客户端与服务端通信的demo
服务端程序流程 #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <str ...
- Highcharts结合PhantomJS在服务端生成高质量的图表图片
项目背景 最近忙着给部门开发一套交互式的报表系统,来替换原有的静态报表系统. 老系统是基于dotnetCHARTING开发的,dotnetCHARTING的优势是图表类型丰富,接口调用简单,使用时只需 ...
- 通过TCP实现显示屏截图请求及回传
在很多业务场景下,需要监视显示屏画面.在实时性要求不高的情况下,可以通过定时对显示屏进行截图及回传实现. 本文通过C#中提供的TCP通信功能,对该功能的实现进行简单描述. 首先,该功能的实现分为客户端 ...
- C#编写Windows服务程序 (服务端),client使用 消息队列 实现淘宝 订单全链路效果
需求: 针对 淘宝提出的 订单全链路 产品接入 .http://open.taobao.com/doc/detail.htm?id=102423&qq-pf-to=pcqq.group oms ...
- Feign + Hystrix 服务熔断和服务降级
本机IP为 192.168.1.102 1. 新建 Maven 项目 feign 2. pom.xml <project xmlns="http://maven.apa ...
- SpringCloud微服务服务间调用之OpenFeign介绍
开发微服务,免不了需要服务间调用.Spring Cloud框架提供了RestTemplate和FeignClient两个方式完成服务间调用,本文简要介绍如何使用OpenFeign完成服务间调用. Op ...
随机推荐
- python升级安装后的yum的修复
升级python版本号后,执行yum # yum -y install openssl 提演示样例如以下: There was a problem importing one of the Pytho ...
- C++常用强制类型转换
1.static_cast 最常用的类型转换符,在正常状况下的类型转换,如把int转换成float,如: int i; float f; f=(float)i; 或者 f=static_cast(i) ...
- [转]XMPP基本概念--节(stanza)
本文介绍在XMPP通信中最核心的三个XML节(stanza).这些节(stanza)有自己的作用和目标,通过组织不同的节(stanza),就能达到我们各种各样的通信目的. 首先我们来看一段XMPP流. ...
- 【LeetCode从零单排】No.135Candy(双向动态规划)
1.题目 There are N children standing in a line. Each child is assigned a rating value. You are giving ...
- iOS_39_触摸解锁
终于效果图: 控制器: // // BeyondViewController.m // 39_触摸解锁 // // Created by beyond on 14-9-17. // Copyright ...
- python 基础 3.1 打开文件 a a+ r+ w+ 详解
一.python 访问文件 1.在python中要访问文件,首先要打开文件,也就是open ---open r: 只读 w: 只写 ,文件已存在则清空,不存在则创建 a:追加 ...
- whl文件下载
到哪找.whl文件?http://www.lfd.uci.edu/~gohlke/pythonlibs/
- 【BZOJ3065】带插入区间K小值 替罪羊树+权值线段树
[BZOJ3065]带插入区间K小值 Description 从前有n只跳蚤排成一行做早操,每只跳蚤都有自己的一个弹跳力a[i].跳蚤国王看着这些跳蚤国欣欣向荣的情景,感到非常高兴.这时跳蚤国王决定理 ...
- hdu 4667 Building Fence < 计算几何模板>
//大白p263 #include <cmath> #include <cstdio> #include <cstring> #include <string ...
- React-Native开源项目学习
https://github.com/liuhongjun719/react-native-DaidaiHelperNew 借贷助手https://github.com/liuhongjun719/r ...