内网无纸化会议/智慧教室实时同屏RTSP组播技术方案思考

简介: 内网环境下,为了满足内网无纸化/电子教室等内网超低延迟需求,避免让用户配置单独的服务器,好多开发者希望有RTSP的技术方案,用于小并发场景,特别是在组网环境好的有线环境下,使用RTSP服务配合组播,是也是好多开发者考量的因素之一。

内网环境下,为了满足内网无纸化/电子教室等内网超低延迟需求,避免让用户配置单独的服务器,好多开发者希望有RTSP的技术方案,用于小并发场景,特别是在组网环境好的有线环境下,使用RTSP服务配合组播,是也是好多开发者考量的因素之一。


鉴于此,大牛直播SDK(Github)发布了轻量级RTSP服务,废话不多说,先上架构图:

20201111093447138.png

轻量级RTSP服务功能支持

  • [音频格式]AAC;
  • [视频格式]H.264、H.265;
  • [协议类型]RTSP;
  • [传输模式]支持单播和组播模式;
  • [端口设置]支持RTSP端口设置;
  • [鉴权设置]支持RTSP鉴权用户名、密码设置;
  • [获取session连接数]支持获取当前RTSP服务会话连接数;
  • [多服务支持]支持同时创建多个内置RTSP服务;
  • [H.265支持]Windows内置rtsp server支持发布H.265视频(64位库);
  • [RTSP url回调]支持设置后的rtsp url通过event回调到上层。


单播不再赘述,这里重点介绍下我们的组播技术方案:


组播解决的主要痛点是服务器部署和带宽占用问题,一般来说,内网电子教室/无纸化/实时同屏场景用RTMP推送+RTMP服务器,然后其他端从服务器拉取RTMP流,这个方案的劣势在于,如果单独部署服务器,需要额外的机器,增加了成本开销,如果教师端机器作为服务器,网络和机器性能双重压力下,负荷过重。


通过组播技术方案,只要网络设备支持组播组网,轻松实现多并发的同屏/摄像头直播场景。


废话不多说,先上图:


大牛直播SDK组播方案开启如下:


1. 设置需要共享的视音频,设置码率后,点击“配置查看Rtsp服务”,选中“组播”和“SSM”选项,点击启动服务即可:

20190201151809336.png

2. 确定后,返回主界面,点击“发布Rtsp流”,拷贝回调的RTSP url,用我们的SmartPlayer.exe或移动端播放器,播放即可。

20190201151754931.png

注意:需要内网网络设备支持组播功能。


经长时间测试,毫秒级延迟,完全满足内网同屏技术指标,更重要的是,在组播同时,还可以同步支持内外网RTMP推送、RTSP推送和实时录像功能。


内置RTSP服务核心接口(以Windows C++ 接口为例:nt_smart_publisher_sdk.h):

    /*+++rtsp server操作接口+++*/
    /*
    * 创建一个rtsp server 
    * pRtspServerHandle: rtsp server 句柄
    * reserve:保留参数传0
    * 成功返回 NT_ERC_OK
    */
    NT_UINT32(NT_API *OpenRtspServer)(NT_PHANDLE pRtspServerHandle, NT_INT32 reserve);
    /*
    * 设置rtsp server 监听端口, 在StartRtspServer之前必须要设置端口
    * rtsp_server_handle: rtsp server 句柄
    * port: 端口号,可以设置为554,或者是1024到65535之间,其他值返回失败
    * 成功返回 NT_ERC_OK
    */
    NT_UINT32(NT_API *SetRtspServerPort)(NT_HANDLE rtsp_server_handle, NT_INT32 port);
    /*
    * 设置rtsp server 鉴权用户名和密码, 这个可以不设置,只有需要鉴权的再设置
    * rtsp_server_handle: rtsp server 句柄
    * user_name: 用户名,必须是英文
    * password:密码,必须是英文
    * 成功返回 NT_ERC_OK
    */
    NT_UINT32(NT_API *SetRtspServerUserNamePassword)(NT_HANDLE rtsp_server_handle, NT_PCSTR user_name, NT_PCSTR password);
    /*
    * 设置rtsp server 组播, 如果server设置成组播就不能单播,组播和单播只能选一个, 一般来说单播网络设备支持的好,wifi组播很多路由器不支持
    * rtsp_server_handle: rtsp server 句柄
    * is_multicast: 是否组播, 1为组播, 0为单播, 其他值接口返回错误, 默认是单播
    * 成功返回 NT_ERC_OK
    */
    NT_UINT32(NT_API *SetRtspServerMulticast)(NT_HANDLE rtsp_server_handle, NT_INT32 is_multicast);
    /*
    * 设置rtsp server 组播组播地址 
    * rtsp_server_handle: rtsp server 句柄
    * multicast_address: 组播地址
    * 如果设置的不是组播地址, 将返回错误
    * 组播地址范围说明: [224.0.0.0, 224.0.0.255] 为组播预留地址, 不能设置. 可设置范围为[224.0.1.0, 239.255.255.255], 其中SSM地址范围为[232.0.0.0, 232.255.255.255]
    * 成功返回 NT_ERC_OK
    */
    NT_UINT32(NT_API *SetRtspServerMulticastAddress)(NT_HANDLE rtsp_server_handle, NT_PCSTR multicast_address);
    /*
    * 获取rtsp server当前的客户会话数, 这个接口必须在StartRtspServer之后再调用
    * rtsp_server_handle: rtsp server 句柄
    * session_numbers: 会话数
    * 成功返回 NT_ERC_OK
    */
    NT_UINT32(NT_API *GetRtspServerClientSessionNumbers)(NT_HANDLE rtsp_server_handle, NT_INT32* session_numbers);
    /*
    * 启动rtsp server
    * rtsp_server_handle: rtsp server 句柄
    * reserve: 保留参数传0
    * 成功返回 NT_ERC_OK
    */
    NT_UINT32(NT_API *StartRtspServer)(NT_HANDLE rtsp_server_handle, NT_INT32 reserve);
    /*
    * 停止rtsp server
    * rtsp_server_handle: rtsp server 句柄
    * 成功返回 NT_ERC_OK
    */
    NT_UINT32(NT_API *StopRtspServer)(NT_HANDLE rtsp_server_handle);
    /*
    * 关闭rtsp server
    * 调用这个接口之后rtsp_server_handle失效,
    * 成功返回 NT_ERC_OK
    */
    NT_UINT32 (NT_API *CloseRtspServer)(NT_HANDLE rtsp_server_handle);
    /*---rtsp server操作接口---*/

本文权当抛砖引玉,感兴趣的开发者,可以参考看看。

相关文章
|
数据采集 编解码 监控
Android对接实现内网无纸化会议|智慧教室|实时同屏功能
本文主要讲的是基于Android平台实现RTMP的技术方案设计,基础架构图如下:
119 0
Android对接实现内网无纸化会议|智慧教室|实时同屏功能
|
11月前
|
语音技术
顶顶通实时质检
顶顶通实时质检 ,通过SIP对接呼叫中心和落地(vos、语音网关),可以实时识别到高危词语,播放提示音进行警告或者直接挂断电话,实时拦截,把风险降低到最小。
128 0
|
Web App开发 网络协议 API
干货满满:多人语音聊天室源码开发解析
目前,一对一直播源码平台已经不能满足广大社交场景和人群了,而多人语音聊天室源码的开发属性,正好满足此需求,也让社交更加多样化、娱乐化,那么在技术上如何开发多人语音聊天室源码呢?
干货满满:多人语音聊天室源码开发解析
|
编解码 开发工具 Android开发
【技术分享】无纸化会议|智慧教室同屏走RTSP组播还是RTMP?
我们在做内网多人同屏(比如无纸化会议、智慧教室同屏)技术方案的时候,遇到个问题:到底使用轻量级RTSP服务实现组播,还是基于RTMP的解决方案?
227 0
|
编解码 监控 应用服务中间件
基于智慧教室|无纸化会议的新选择:RTMP解决方案
基于智慧教室或是会议的技术方案,一般主要是涉及到屏幕采集和推送,整体技术方案这块,一般建议走RTMP,说到这里,好人开发者提到,市面上也有RTSP的技术方案,甚至RTSP组播方案,这块,大牛直播SDK Github 也做过相关对比,总的来说60人智慧教室或类似同屏场景下,最可靠的还是RTMP的解决方案(不赘述,具体可自行测试对比)。
118 0
|
Web App开发 移动开发 算法
关于 TRTC (实时音视频通话模式)在我司的实践 #78
关于 TRTC (实时音视频通话模式)在我司的实践 #78
338 0
SIP的voip语音环境咬线或摘机状态什么处理
SIP的voip语音环境咬线或摘机状态什么处理
|
Web App开发 网络虚拟化
使用 WebRTC 构建简单的视频聊天室(1)
使用 WebRTC 构建简单的视频聊天室(1)
423 0
|
存储 搜索推荐 安全
迅时IP-PBX电话系统特色功能应用
本文以OM80E为例,简要介绍迅时IP-PBX的五大特色应用。 - 企业直线电话 - 录音管理 - 商务电话管家 - 外网分机注册 - 呼叫中心集成
|
编解码 网络协议 数据库
语音业务VOIP开发之SIP协议篇
SIP是基于一个类似HTTP协议的请求应答的通讯模式。每一个通讯都包含对某个功能的请求,并且起码需要一个应答。在这个应答中,Alice的软电话发送一个含有Bbo的SIP URI抵制的INVITE通讯请求。INVITE是一个SIP请求的例子,表示请求方(Alice)希望服务方(Bob)应答。INVTE请求包含一系列的包头域(Header fields)。包头中包含很多属性并且包含了传输消息的附加信息。在INVITE中有如下的字段:呼叫的唯一标志,目的抵制,Alice的地址,Alice和Bob建立会话的类型。INVITE请求(图1中的F1)可能看起来像这样的: