轻量级RTSP服务存在的意义
為什么要設(shè)計輕量級RTSP服務(wù)
輕量級RTSP服務(wù)解決的核心痛點是避免用戶或者開發(fā)者單獨部署RTSP或者RTMP服務(wù)。
輕量級RTSP服務(wù)可滿足內(nèi)網(wǎng)無紙化/電子教室等內(nèi)網(wǎng)超低延遲的低并發(fā)需求,避免讓用戶配置單獨的服務(wù)器,大牛直播SDK在推送端發(fā)布了輕量級RTSP服務(wù)模塊。
設(shè)計架構(gòu)圖
實現(xiàn)本地的音視頻數(shù)據(jù)(如攝像頭、麥克風),編碼后,匯聚到內(nèi)置RTSP服務(wù),對外提供可供拉流的RTSP URL,輕量級RTSP服務(wù),適用于內(nèi)網(wǎng)環(huán)境下,對并發(fā)要求不高的場景,支持H.264/H.265,支持RTSP鑒權(quán)、單播、組播模式,考慮到單個服務(wù)承載能力,我們支持同時創(chuàng)建多個RTSP服務(wù),并支持獲取當前RTSP服務(wù)會話連接數(shù)。
簡單來說,你可以把它看成IPC(網(wǎng)絡(luò)攝像機)。
輕量級RTSP服務(wù)設(shè)計支持功能
- ?[基礎(chǔ)功能]支持常規(guī)的屏幕、攝像機、音頻采集處理等;
- ?[音頻格式]AAC;
- ?[視頻格式]H.264、H.265;
- ?[協(xié)議類型]RTSP;
- ?[傳輸模式]支持單播和組播模式;
- ?[端口設(shè)置]支持RTSP端口設(shè)置;
- ?[鑒權(quán)設(shè)置]支持RTSP鑒權(quán)用戶名、密碼設(shè)置;
- ?[獲取session連接數(shù)]支持獲取當前RTSP服務(wù)會話連接數(shù);
- ?[多服務(wù)支持]支持同時創(chuàng)建多個內(nèi)置RTSP服務(wù);
- ?[H.265支持]Windows內(nèi)置rtsp server支持發(fā)布H.265視頻(64位庫);
- ?[RTSP url回調(diào)]支持設(shè)置后的rtsp url通過event回調(diào)到上層。
輕量級RTSP服務(wù)調(diào)用接口設(shè)計
如需要下載相關(guān)demo,可以到 github 下載參考(Windows平臺RTMP|RTSP推送SDK、內(nèi)置RTSP服務(wù)SDK、錄像SDK(C++) Demo工程本地下載)
/*+++rtsp server操作接口+++*//** 創(chuàng)建一個rtsp server * pRtspServerHandle: rtsp server 句柄* reserve:保留參數(shù)傳0* 成功返回 NT_ERC_OK*/NT_UINT32(NT_API *OpenRtspServer)(NT_PHANDLE pRtspServerHandle, NT_INT32 reserve);/** 設(shè)置rtsp server 監(jiān)聽端口, 在StartRtspServer之前必須要設(shè)置端口* rtsp_server_handle: rtsp server 句柄* port: 端口號,可以設(shè)置為554,或者是1024到65535之間,其他值返回失敗* 成功返回 NT_ERC_OK*/NT_UINT32(NT_API *SetRtspServerPort)(NT_HANDLE rtsp_server_handle, NT_INT32 port);/** 設(shè)置rtsp server 鑒權(quán)用戶名和密碼, 這個可以不設(shè)置,只有需要鑒權(quán)的再設(shè)置* 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);/** 設(shè)置rtsp server 組播, 如果server設(shè)置成組播就不能單播,組播和單播只能選一個, 一般來說單播網(wǎng)絡(luò)設(shè)備支持的好,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);/** 設(shè)置rtsp server 組播組播地址 * rtsp_server_handle: rtsp server 句柄* multicast_address: 組播地址* 如果設(shè)置的不是組播地址, 將返回錯誤* 組播地址范圍說明: [224.0.0.0, 224.0.0.255] 為組播預(yù)留地址, 不能設(shè)置. 可設(shè)置范圍為[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當前的客戶會話數(shù), 這個接口必須在StartRtspServer之后再調(diào)用* rtsp_server_handle: rtsp server 句柄* session_numbers: 會話數(shù)* 成功返回 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: 保留參數(shù)傳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);/** 關(guān)閉rtsp server* 調(diào)用這個接口之后rtsp_server_handle失效,* 成功返回 NT_ERC_OK*/NT_UINT32 (NT_API *CloseRtspServer)(NT_HANDLE rtsp_server_handle);/*---rtsp server操作接口---*/如何操作內(nèi)置RTSP服務(wù)
以Windows平臺為例:
1. 在選擇好需要推送出去的音視頻數(shù)據(jù)類型、調(diào)整好碼率后,點擊“配置查看RTSP服務(wù)”:
2. 根據(jù)需求,可以啟動一路或者多路服務(wù),每路服務(wù),并可配置用戶名密碼信息(可選)。啟動服務(wù)后,點擊“確定”退出設(shè)置頁面;
3. 配置流名稱(可自定義),默認是 stream1;
4. 發(fā)布RTSP流:
5. 發(fā)布后,播放地址列表里面,會顯示當前發(fā)布的url,拷貝其中一個或多個,用大牛直播直播播放器SDK,分別播放即可;
6.服務(wù)器負載查看:再次點擊“配置查看RTSP服務(wù)”,即可看到每個服務(wù)連接的會話數(shù);
7. 如需停止服務(wù),點擊頁面的“停止RTSP流”即可;
8. 如需啟動RTSP服務(wù)的同時,還需要把數(shù)據(jù)推到其他RTMP服務(wù),輸入推送的RTMP url,點擊“推送”即可。
經(jīng)測試,整體延遲在200-300毫秒?yún)^(qū)間。
總結(jié)
以上是生活随笔為你收集整理的轻量级RTSP服务存在的意义的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows平台RTMP多实例推送探讨
- 下一篇: 【面试招聘】去不了大厂实习,小厂实习去吗