轻量级RTSP服务存在的意义

简介: 为什么要设计轻量级RTSP服务轻量级RTSP服务解决的核心痛点是避免用户或者开发者单独部署RTSP或者RTMP服务。轻量级RTSP服务可满足内网无纸化/电子教室等内网超低延迟的低并发需求,避免让用户配置单独的服务器,大牛直播SDK在推送端发布了轻量级RTSP服务模块。

为什么要设计轻量级RTSP服务

轻量级RTSP服务解决的核心痛点是避免用户或者开发者单独部署RTSP或者RTMP服务


轻量级RTSP服务可满足内网无纸化/电子教室等内网超低延迟的低并发需求,避免让用户配置单独的服务器,大牛直播SDK在推送端发布了轻量级RTSP服务模块。

设计架构图

2020013018040678.png

实现本地的音视频数据(如摄像头、麦克风),编码后,汇聚到内置RTSP服务,对外提供可供拉流的RTSP URL,轻量级RTSP服务,适用于内网环境下,对并发要求不高的场景,支持H.264/H.265,支持RTSP鉴权、单播、组播模式,考虑到单个服务承载能力,我们支持同时创建多个RTSP服务,并支持获取当前RTSP服务会话连接数。


简单来说,你可以把它看成IPC(网络摄像机)。

轻量级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回调到上层。

轻量级RTSP服务调用接口设计

如需要下载相关demo,可以到 github 下载参考(Windows平台RTMP|RTSP推送SDK、内置RTSP服务SDK、录像SDK(C++) Demo工程本地下载)

    /*+++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操作接口---*/

如何操作内置RTSP服务

以Windows平台为例:


1. 在选择好需要推送出去的音视频数据类型、调整好码率后,点击“配置查看RTSP服务”:

20200203171115653.png2. 根据需求,可以启动一路或者多路服务,每路服务,并可配置用户名密码信息(可选)。启动服务后,点击“确定”退出设置页面;

20200203170829124.png3. 配置流名称(可自定义),默认是 stream1;


4. 发布RTSP流:

20200203170918759.png

5. 发布后,播放地址列表里面,会显示当前发布的url,拷贝其中一个或多个,用大牛直播直播播放器SDK,分别播放即可;

20200203170935819.png

6.服务器负载查看:再次点击“配置查看RTSP服务”,即可看到每个服务连接的会话数;


7. 如需停止服务,点击页面的“停止RTSP流”即可;


8. 如需启动RTSP服务的同时,还需要把数据推到其他RTMP服务,输入推送的RTMP url,点击“推送”即可。


经测试,整体延迟在200-300毫秒区间。

相关文章
|
7月前
|
网络协议 Linux iOS开发
推荐:实现RTSP/RTMP/HLS/HTTP协议的轻量级流媒体框架,支持大并发连接请求
推荐:实现RTSP/RTMP/HLS/HTTP协议的轻量级流媒体框架,支持大并发连接请求
296 1
|
编解码 物联网 开发工具
Android平台内网RTSP网关和轻量级RTSP服务的区别和联系
我们在对接轻量级RTSP服务的时候,遇到客户这样的使用场景:客户是用于车载自组网环境,确保多辆车之间可以相互看到对方的实时视频,以期可以了解到前方路况等关注的信息。
143 0
|
4月前
|
网络协议 开发工具 C#
RTSP协议探究和RTSP播放器技术实现
RTSP播放器可广泛应用于对延迟要求比较高的场景下,比如协同操控相关的智能机器人或无人机、实时视频监控、远程视频会议、网络电视等。通过控制信令实现对流媒体数据的远程控制和传输管理。
150 0
|
1月前
|
编解码 监控 网络协议
HLS 和 RTSP 的优势
【10月更文挑战第25天】HLS和RTSP各自的优势使其在不同的应用场景中发挥着重要作用。HLS适用于需要广泛兼容性、自适应码率和简单部署的场景,如在线视频点播、直播等;而RTSP则更适合对实时性、精确播放控制和互操作性要求较高的专业级实时流媒体应用。了解它们的优势有助于根据具体的项目需求选择最合适的流媒体传输协议。
50 6
|
4月前
|
监控 开发工具 Android开发
Android平台实现RTSP拉流转发至轻量级RTSP服务
为满足Android平台上从外部RTSP摄像头拉流并提供轻量级RTSP服务的需求,利用大牛直播SDK实现了相关功能。SDK支持开始与停止拉流、音频视频数据回调处理及RTSP服务的启动与发布等操作。拉流仅需将未解码数据回调,对性能影响小。音频和视频数据经由特定接口传递给发布端进行处理。此外,SDK还提供了获取RTSP会话数量的功能。此方案适用于监控和巡检等低延迟应用场景,并支持二次水印添加等功能。
|
4月前
|
编解码 Linux 开发工具
如何启动Windows平台轻量级RTSP服务生成RTSP拉流URL
为满足内网超低延迟需求,我们开发了轻量级RTSP服务模块,避免用户额外部署服务器。此模块集成于推送端SDK中,支持Windows、Linux、Android及iOS平台,可将本地音视频数据编码后通过RTSP协议提供。具备RTSP鉴权、单播/组播等功能,支持H.264/H.265编码,同时可创建多个服务实例,并查询连接数。实测总延迟约200-300毫秒,兼具稳定与高效。
|
4月前
|
Linux 开发工具 图形学
Unity下实现跨平台的RTMP推流|轻量级RTSP服务|RTMP播放|RTSP播放低延迟解决方案
自2018年起,我们成功实现了Unity环境下的低延迟RTSP|RTMP播放,达到毫秒级延迟,获得业界广泛认可。现已覆盖Windows、Android、iOS与Linux平台的RTMP推送、轻量级RTSP服务及RTSP|RTMP播放。通过高效采集Unity窗口或摄像头数据,并利用原生SDK进行编码与推送,确保了数据传输的高速性。此外,播放器支持多路视频同时播放,适应不同分辨率,并保持长时间运行稳定。更多技术细节和技术博文,请参考相关链接。
263 1
[笔记]音视频学习之RTSP篇《一》rtsp协议简介
[笔记]音视频学习之RTSP篇《一》rtsp协议简介
|
开发工具 Android开发 开发者
Android平台轻量级RTSP服务模块如何实现一个服务发布多路RTSP流?
Android平台轻量级RTSP服务模块如何实现一个服务发布多路RTSP流?
280 0
|
编解码 开发工具 开发者
轻量级RTSP服务和内置RTSP网关的区别和联系
好多开发者疑惑,什么是内置RTSP网关,和轻量级RTSP服务又有什么区别和联系?本文就以上问题,做个简单的介绍: