輕量級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毫秒區間。

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