首页 > 其他分享 >基于live555开发的多线程RTSPServer轻量级流媒体服务器EasyRTSPServer开源代码及其调用示例,PC、嵌入式、Android全通用,Github开源

基于live555开发的多线程RTSPServer轻量级流媒体服务器EasyRTSPServer开源代码及其调用示例,PC、嵌入式、Android全通用,Github开源

时间:2024-08-31 11:15:47浏览次数:10  
标签:源代码 示例 define CODEC VIDEO EASY 多线程 EasyRTSPServer SDK

EasyRTSPServer参考live555 testProg中的testOnDemandRTSPServer示例程序,将一个live555 testOnDemandRTSPServer封装在一个类中,例如,我们称为Class EasyRTSPServer,在EasyRTSPServer_Create接口调用时,我们新建一个EasyRTSPServer对象,再通过调用EasyRTSPServer_Startup接口,将EasyRTSPServer RTSPServer所需要的监听端口、认证信息、通道信息等参数输入到EasyRTSPServer中后,EasyRTSPServer就正式开始建立监听对外服务了,在服务的过程中,当有客户端的连接或断开,都会以回调事件的形式,通知给Controller调用者,调用者再具体来处理相关的回调任务,返回给EasyRTSPServer,在EasyRTSPServer服务的过程当中,如果回调要求需要Controller调用者提供音视频数据帧,Controller调用者可以通过EasyRTSPServer_PushFrame接口,向EasyRTSPServer输送具体的音视频帧数据,当调用者需要结束RTSPServer服务,只需要调用EasyRTSPServer_Shutdown停止服务,再调用EasyRTSPServer_Release释放EasyRTSPServer就可以了,这样整个服务过程就完整了!

功能支持

EasyRTSPServer支持数据格式说明

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 */

EasyRTSPServer开源

EasyRTSPServer是由EasyDarwin开源社区开发的一套非常稳定、易用、支持多种平台(包括Windows/Linux 32&64,Android,ARM hisiv100/hisiv200/hisiv300/hisiv400/hisiv500/hisiv600等平台)的RTSP Server组件,适用于IPCamera、NVR、编码器、安卓监控设备等软硬件产品,接口调用非常简单成熟,调用者无需关注RTSP Server中关于客户端监听接入、音视频多路复用、RTSP具体流程、RTP打包与发送等相关问题,支持多种音视频格式,再也不用像调用live555 RTSPServer那样处理整个RTSP OPTIONS/DESCRIBE/SETUP/PLAY/RTP/RTCP的复杂流程和担心内存释放的问题了!EasyIPCamera非常适合于安防领域、教育领域、互联网直播等领域;

BTW:EasyRTSPServer非常适合在海思系列芯片上运行,性能以及稳定性都非常优秀,并发方面,稳定保持在20路1080P并发:

  • TCP/UDP 方式分别连接20路下,1080P 4M 定码率,音频格式G711(64K)G726(16K 24K 32K 40K)AAC(64K 96K 128K)都没问题;

  • 支持Basic、Digest两种鉴权模式;

EasyRTSPServer Github代码地址:https://github.com/EasyDarwin/EasyRTSPServer

标签:源代码,示例,define,CODEC,VIDEO,EASY,多线程,EasyRTSPServer,SDK
From: https://www.cnblogs.com/babosa/p/18390012

相关文章

  • 豆包 API 调用示例代码详解-Python版
    文章目录豆包API调用示例代码详解-Python版一、事前准备二、所需Python包三、代码详解五、源码下载四、总结豆包官方API文档豆包API调用示例代码详解-Python版在本文中,我们将详细介绍如何使用Python调用豆包API,并提供相关的事前准备和代码执行步骤。一、......
  • WebGL入门(020):WebGLTransformFeedback 简介、使用方法、示例代码
    还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技术开发,欢迎加底部微信(gis-dajianshi),一起交流。No.内容链接1Openlayers【入门教程】-......
  • Tita的OKR:您绝对不能错过的 OKR 示例!
    作为孩子,我们经常被告知要“集中精力”学习才能取得成功。当我们进入企业界时,这种集中或专注的原则经常被忘记。研究表明,拥有具体的目标可以带来更高的绩效和成功的目标实现。令人惊讶的是,伦敦商学院进行的一项研究显示,在接受调查的11,000名高级管理人员中,只有三分之一能够列出......
  • 【C#】一个喜欢用Python的菜狗在尝试Linq之后总结的常见用法以及示例
    1.筛选(Where)筛选集合中的元素。类似python中列表推导式中的if示例int[]numbers={1,2,3,4,5,6};varevenNumbers=numbers.Where(n=>n%2==0);foreach(varnuminevenNumbers){Console.WriteLine(num);}//输出:2,4,6python中的实现[if......
  • Spring Security基于token的极简示例
    1引言SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,但是用起来有点复杂,为了便于学习理解,下面将用最简洁的配置和示例,展示整个流程。2代码创建一个spring-security-demo的项目,总共包含5个文件2.1pom.xml引入spri......
  • Redis多线程特性
    Redis6.0版本之前是用单线程模型,6.0版本为什么使用多线程?Redis几乎不存在CPU成为性能瓶颈的情况,主要受限于内存和网络IO内存优化内存淘汰策略增加内存硬件网络IO优化Redis在处理客户端的请求时,包括获取(socket读)、解析、执行、内容返回(socket写)等都由一个顺序串......
  • python使用 pyshark 库捕获数据包,附示例
    以下为您提供使用Python的pcap库捕获网络数据包的示例及相关信息:在Python中,可以使用pcap库来实现网络数据包的捕获。例如:importpcap#创建pcap实例pc=pcap.pcap()#设置过滤条件,例如捕获TCP端口为80的数据包pc.setfilter('tcpport80')#开始抓......
  • python使用 pcap 库捕获网络数据包,附示例
    以下为您提供使用Python的pcap库捕获网络数据包的示例及相关信息:在Python中,可以使用pcap库来实现网络数据包的捕获。例如:importpcap#创建pcap实例pc=pcap.pcap()#设置过滤条件,例如捕获TCP端口为80的数据包pc.setfilter('tcpport80')#开始抓......
  • 每天分享一个FPGA开源代码(1)- spi
    1、SPI总线进行通信的结构 SPI总线主要包括四根关键信号线:(1)SCK(SerialClock)串行时钟线,由主设备产生,控制数据传输的速率和时机。(2)MOSI(MasterOutSlaveIn)主设备数据输出线,数据由主设备发送给从设备。(3)MISO(MasterInSlaveOut)从设备数据输出线,数据由从设备发......
  • 创建订单使用多线程处理
    创建订单使用多线程异步处理,快速响应创单请求订单创建结果放入Redis里面就结束,获取订单结果走新接口从Redis里面取/***订单创建*/@Component@ConfigurationProperties(prefix="spring.create-order.thread-pool")publicclassCreateOrderimplementsSerializable,......