轻量级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毫秒區間。
總結
以上是生活随笔為你收集整理的轻量级RTSP服务存在的意义的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows平台RTMP多实例推送探讨
- 下一篇: 【面试招聘】去不了大厂实习,小厂实习去吗