本项目维护于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的更多相关文章

  1. SDL 截图、录像、录像播放

    截图 使用sdl很简单,视频显示窗口大小,不是视频分辨率大小 int i = Sdl.SDL_SaveBMP(surfacePtr, path); if(i != 0) { MessageBox.Sh ...

  2. 使用javacv录像,同时进行讯飞声纹认证

    由于最近的demo中需要在活体检测的同时进行音视频录制 ,  尝试使用MediaRecord和camera来录制视频 , 然而Camera.onPreviewFrame 不能与 MediaRecord ...

  3. Windows Azure案例分析: 选择虚拟机或云服务?

    作者 王枫 发布于2013年6月27日 随着云计算技术和市场的日渐成熟,企业在考虑IT管理和运维时的选择也更加多样化,应用也从传统部署方式,发展为私有云.公有云.和混合云等部署方式.作为微软核心的公有 ...

  4. ssl客户端与服务端通信的demo

    服务端程序流程 #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <str ...

  5. Highcharts结合PhantomJS在服务端生成高质量的图表图片

    项目背景 最近忙着给部门开发一套交互式的报表系统,来替换原有的静态报表系统. 老系统是基于dotnetCHARTING开发的,dotnetCHARTING的优势是图表类型丰富,接口调用简单,使用时只需 ...

  6. 通过TCP实现显示屏截图请求及回传

    在很多业务场景下,需要监视显示屏画面.在实时性要求不高的情况下,可以通过定时对显示屏进行截图及回传实现. 本文通过C#中提供的TCP通信功能,对该功能的实现进行简单描述. 首先,该功能的实现分为客户端 ...

  7. C#编写Windows服务程序 (服务端),client使用 消息队列 实现淘宝 订单全链路效果

    需求: 针对 淘宝提出的 订单全链路 产品接入 .http://open.taobao.com/doc/detail.htm?id=102423&qq-pf-to=pcqq.group oms ...

  8. Feign + Hystrix 服务熔断和服务降级

    本机IP为  192.168.1.102 1.    新建 Maven 项目   feign 2.   pom.xml <project xmlns="http://maven.apa ...

  9. SpringCloud微服务服务间调用之OpenFeign介绍

    开发微服务,免不了需要服务间调用.Spring Cloud框架提供了RestTemplate和FeignClient两个方式完成服务间调用,本文简要介绍如何使用OpenFeign完成服务间调用. Op ...

随机推荐

  1. linux中MACHINE_START&END在9g10ek上实现

    在linux的板卡初始化文件中有machine的相关定义 //arch/arm/mach-at91/board-sam9261ek.c MACHINE_START(AT91SAM9G10EK, &qu ...

  2. 源码维护基本命令diff_patch_quilt

    源码维护基本命令 一. diff--生成补丁 diff [命令行选项] 源文件 新文件 -r 递归处理相应目录 -N 包含新文件到patch -u 输出统一格式(unified format),这种格 ...

  3. Jenkins--Run shell command in jenkins as root user?

    You need to modify the permission for jenkins user so that you can run the shell commands. You can i ...

  4. 深入Asyncio(二)从线程到协程

    线程的真相 多线程并不是一无是处,在实际问题中,要权衡优劣势来选择多线程.多进程或是协程.协程为多线程的某些问题提供了一种解决方案,所以学习协程首先要对线程有一定了解. 多线程优点 代码可读性 多线程 ...

  5. 认识XmlReader

    认识XmlReader   摘要 XmlReader类是组成.NET的关键技术之一,极大地方便了开发人员对Xml的操作.通过本文您将对XmlReader有一个很好的认识,并将其应用到实际开发中. 目录 ...

  6. Centos7升级python版本

    升级Python 我的安装目录是/home/python 下载 ` cd /home/python wget https://www.python.org/ftp/python/3.5.0/Pytho ...

  7. Python爬虫-- BeautifulSoup库

    BeautifulSoup库 beautifulsoup就是一个非常强大的工具,爬虫利器.一个灵活又方便的网页解析库,处理高效,支持多种解析器.利用它就不用编写正则表达式也能方便的实现网页信息的抓取 ...

  8. (转)扫盲--JavaScript的立即执行函数

    看过jQuery源码的人应该知道,jQuery开篇用的就是立即执行函数.立即执行函数常用于第三方库,好处在于隔离作用域,任何一个第三方库都会存在大量的变量和函数,为了避免变量污染(命名冲突),开发者们 ...

  9. python 安装coreml

    2.安装pip,  下载get-pip.py, https://bootstrap.pypa.io/get-pip.py,然后Python 这个文件,如果没有权限就加sudo 3.安装coreml:这 ...

  10. LightOJ - 1079 Just another Robbery —— 概率、背包

    题目链接:https://vjudge.net/problem/LightOJ-1079 1079 - Just another Robbery    PDF (English) Statistics ...