EasyIPCamera高性能摄像机RTSP服务器RTSPServer解决方案
EasyIPCamera
EasyIPCamera是由EasyDarwin团队开发的一套非常稳定、易用、支持多种平台(包括Windows/Linux 32&64,Android,ARM hisiv100/hisiv200/hisiv400等平台)的RTSPServer组件,接口调用非常简单成熟,无需关注RTSPServer中关于客户端监听接入、音视频多路复用、RTSP具体流程、RTP打包与发送等相关问题,支持多种音视频格式,再也不用像调用live555 RTSPServer那样处理整个RTSP OPTIONS/DESCRIBE/SETUP/PLAY/RTP/RTCP的复杂流程和担心内存释放的问题了!
BTW:EasyIPCamera在海思3156A芯片上的性能经过我们半年多的调试,目前已经可以稳定在4路1080P并发:
- TCP/UDP 方式分别连接3路下,1080P 4M 定码率,音频格式G711(64K)G726(16K 24K 32K 40K)AAC(64K 96K 128K)都没问题;
- TCP/UDP 方式分别连接4路下,1080P 4M 定码率,音频格式G711(64K)G726(16K 24K 32K 40K)AAC(64K 96K 128K)都没问题;
- 支持Basic、Digest两种鉴权模式;
调用示例
EasyIPCamera:在不同的调用平台上,我们实现了不同的调用示例;
- EasyIPCamera_Win:Windows采集摄像头/屏幕桌面/麦克风的音视频做为数据源的RTSPServer;
- EasyIPCamera_RTSP:以其他IPC硬件(海康、大华、雄迈)提供的RTSP流做为EasyIPCamera的数据源,对外提供RTSPServer功能;
- ARM上我们提供基于海思v100/v200/v300/v400以及其他ARM芯片的摄像机芯片编码后的音视频做为数据源的RTSPServer,具体芯片调用demo示例代码请邮件至support@easydarwin.org申请;
Windows编译方法,
Visual Studio 2010 编译:./EasyIPCamera-master/EasyIPCamera.sln
Linux编译方法,
chmod +x ./Buildit
./Buildit
我们同时提供Windows、Linux、ARM版本的EasyIPCamera SDK:可通过邮件发送至support@easydarwin.org进行申请,注意ARM版本需要附上交叉编译工具链,我们会帮您具体编译,目前Github已经更新支持的平台有:
支持平台 芯片 目录位置 Windows x86 ./Lib/ Windows x64 ./Lib/x64/ Linux x86 ./Lib/ Linux x64 ./Lib/x64/ Android Android ./Android/ 海思 arm-hisiv100-linux ./Lib/hisiv100/ 海思 arm-hisiv200-linux ./Lib/hisiv200/ 海思 arm-hisiv300-linux ./Lib/hisiv300/ 海思 arm-hisiv400-linux ./Lib/hisiv400/ 邮件获取更多平台版本
调用全流程

设计方法
EasyIPCamera参考live555 testProg中的testOnDemandRTSPServer示例程序,将一个live555 testOnDemandRTSPServer封装在一个类中,例如,我们称为Class EasyIPCamera,在EasyIPCamera_Create接口调用时,我们新建一个EasyIPCamera对象,再通过调用EasyIPCamera_Startup接口,将EasyIPCamera RTSPServer所需要的监听端口、认证信息、通道信息等参数输入到EasyIPCamera中后,EasyIPCamera就正式开始建立监听对外服务了,在服务的过程中,当有客户端的连接或断开,都会以回调事件的形式,通知给Controller调用者,调用者再具体来处理相关的回调任务,返回给EasyIPCamera,在EasyIPCamera服务的过程当中,如果回调要求需要Controller调用者提供音视频数据帧,Controller调用者可以通过EasyIPCamera_PushFrame接口,向EasyIPCamera输送具体的音视频帧数据,当调用者需要结束RTSPServer服务,只需要调用EasyIPCamera_Shutdown停止服务,再调用EasyIPCamera_Release释放EasyIPCamera就可以了,这样整个服务过程就完整了!
EasyIPCamera支持数据格式说明
EASY_SDK_VIDEO_FRAME_FLAG数据可支持多种视频格式:
#define EASY_SDK_VIDEO_CODEC_H265 /* H265 */
#define EASY_SDK_VIDEO_CODEC_H264 /* H264 */
#define EASY_SDK_VIDEO_CODEC_MJPEG /* MJPEG */
#define EASY_SDK_VIDEO_CODEC_MPEG4 /* MPEG4 */
视频帧标识支持
#define EASY_SDK_VIDEO_FRAME_I /* I帧 */
#define EASY_SDK_VIDEO_FRAME_P /* P帧 */
#define EASY_SDK_VIDEO_FRAME_B /* B帧 */
#define EASY_SDK_VIDEO_FRAME_J /* JPEG */
EASY_SDK_AUDIO_FRAME_FLAG数据可支持多种音频格式:
#define EASY_SDK_AUDIO_CODEC_AAC /* AAC */
#define EASY_SDK_AUDIO_CODEC_G711A /* G711 alaw*/
#define EASY_SDK_AUDIO_CODEC_G711U /* G711 ulaw*/
#define EASY_SDK_AUDIO_CODEC_G726 /* G726 */
获取更多信息
Copyright © EasyDarwin.org 2012-2016

EasyIPCamera高性能摄像机RTSP服务器RTSPServer解决方案的更多相关文章
- EasyDSS流媒体服务器灵活地帮助用户实现摄像机RTSP转RTMP直播功能
简要描述 今天突然接到国内某上市公司同事打来的技术咨询电话,经过简单的沟通,大概所描述的需求是: 1.目前现场有非常多的摄像机资源需要接入: 2.需要将摄像机的RTSP流转成RTMP流接入到微信小程序 ...
- [工具]利用EasyRTSPClient工具检查摄像机RTSP流不能播放原因以及排查音视频数据无法播放问题
出现问题 我们在做流媒体开发的过程中,进程会出现摄像机RTSP流莫名其妙无法播放的问题,而我们常用的vlc经常是直接弹出一个无法播放的提示框就完事了,没有说明出错的原因,或者在vlc的消息里面能看到日 ...
- 【VS开发】【Live555-rtsp】RTSP服务器实例live555源代码分析
原文地址:RTSP服务器实例live555源代码分析作者:mozheer 1. RTSP连接的建立过程 RTSPServer类用于构建一个RTSP服务器,该类同时在其内部定义了一个RTSPClient ...
- 谈谈如何使用Netty开发实现高性能的RPC服务器
RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络,从远程计算机程序上请求服务,而不必了解底层网络技术的协议.说的再直白一点,就是客户端在不必知道 ...
- live555从RTSP服务器读取数据到使用接收到的数据流程分析
本文在linux环境下编译live555工程,并用cgdb调试工具对live555工程中的testProgs目录下的openRTSP的执行过程进行了跟踪分析,直到将从socket端读取视频数据并保存为 ...
- Netty开发实现高性能的RPC服务器
Netty开发实现高性能的RPC服务器 RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络,从远程计算机程序上请求服务,而不必了解底层网络技术的协 ...
- 从零开始写一个发送h264的rtsp服务器(上)
转自:http://blog.csdn.net/jychen105/article/details/47006345 一.什么是RTSP 通常所说的rtsp协议其实包含三个协议: rtsp协议, rt ...
- (转)live555从RTSP服务器读取数据到使用接收到的数据流程分析
本文在linux环境下编译live555工程,并用cgdb调试工具对live555工程中的testProgs目录下的openRTSP的执行过程进行了跟踪分析,直到将从socket端读取视频数据并保存为 ...
- Android终端与服务器数据传输解决方案
Android终端与服务器数据传输解决方案 Android终端三种与服务器传输方式: Socket传输 WebService传输 Post/Get获取数据方式 网络实现条件 端口:指定 协议:TC ...
随机推荐
- APUE 学习笔记(八) 线程同步
1. 进程的所有信息对该进程内的所有线程都是共享的 包括 可执行的程序文本.程序全局内存.堆内存以及文件描述符 线程包含了表示进程内执行环境必需的信息,包括线程ID.寄存器值.栈.调度优先级和策略.信 ...
- 长度rem的使用
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- How to debug Android Native Application with eclipse
This blog is inspired by this tutorial http://mhandroid.wordpress.com/2011/01/23/using-eclipse-for-a ...
- LeetCode OJ——Word Break
http://oj.leetcode.com/problems/word-break/ 动态规划题目,重点是建立出模型来: fun(start,end) = fun(start,i)*fun(i+1, ...
- AC日记——小木棍【数据加强版】 洛谷 P1120
题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度. 给出每段小木棍的长度,编 ...
- js拖拽效果的实现
1.最基础的写法 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> < ...
- 这道js面试题号称99%的人会做错
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 作为一个新人,怎样学习嵌入式Linux?
作为一个新人,怎样学习嵌入式Linux? 在学习嵌入式Linux之前,肯定要有C语言基础.汇编基础有没有无所谓(就那么几条汇编指令,用到了一看就会).尝试着写一些C语言竞赛的题目.它们是纯 ...
- MySQL主从复制技术与读写分离技术amoeba应用
MySQL主从复制技术与读写分离技术amoeba应用 前言:眼下在搭建一个人才站点,估计流量会非常大,须要用到分布式数据库技术,MySQL的主从复制+读写分离技术.读写分离技术有官方的MySQL-pr ...
- 百科知识 DMG文件如何打开
1 DMG格式是在MAC系统上的一个镜象文件,也可以说是压缩文件,如果你是使用苹果机或在PC上装了MAC OS X for X86,在MAC系统上双击这个文件就可以解开了:现在在Windows平台,我 ...