轻量级RTSP服务存在的意义

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

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

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

设计架构图

实现本地的音视频数据(如摄像头、麦克风),编码后,汇聚到内置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服务”:

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

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

4. 发布RTSP流:

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

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

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

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章