輕量級RTSP服務解決的核心痛點是避免用戶或者開發者單獨部署RTSP或者RTMP服務。html
輕量級RTSP服務可知足內網無紙化/電子教室等內網超低延遲的低併發需求,避免讓用戶配置單獨的服務器,大牛直播SDK在推送端發佈了輕量級RTSP服務模塊。git
實現本地的音視頻數據(如攝像頭、麥克風),編碼後,匯聚到內置RTSP服務,對外提供可供拉流的RTSP URL,輕量級RTSP服務,適用於內網環境下,對併發要求不高的場景,支持H.264/H.265,支持RTSP鑑權、單播、組播模式,考慮到單個服務承載能力,咱們支持同時建立多個RTSP服務,並支持獲取當前RTSP服務會話鏈接數。github
簡單來講,你能夠把它當作IPC(網絡攝像機)。服務器
如須要下載相關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操做接口---*/
以Windows平臺爲例:session
1. 在選擇好須要推送出去的音視頻數據類型、調整好碼率後,點擊「配置查看RTSP服務」:架構
2. 根據需求,能夠啓動一路或者多路服務,每路服務,並可配置用戶名密碼信息(可選)。啓動服務後,點擊「肯定」退出設置頁面;併發
3. 配置流名稱(可自定義),默認是 stream1;ide
4. 發佈RTSP流:測試
5. 發佈後,播放地址列表裏面,會顯示當前發佈的url,拷貝其中一個或多個,用大牛直播直播播放器SDK,分別播放便可;
6.服務器負載查看:再次點擊「配置查看RTSP服務」,便可看到每一個服務鏈接的會話數;
7. 如需中止服務,點擊頁面的「中止RTSP流」便可;
8. 如需啓動RTSP服務的同時,還須要把數據推到其餘RTMP服務,輸入推送的RTMP url,點擊「推送」便可。
經測試,總體延遲在200-300毫秒區間。