内网无纸化会议/智慧教室实时同屏RTSP组播技术方案思考
內(nèi)網(wǎng)環(huán)境下,為了滿足內(nèi)網(wǎng)無紙化/電子教室等內(nèi)網(wǎng)超低延遲需求,避免讓用戶配置單獨(dú)的服務(wù)器,好多開發(fā)者希望有RTSP的技術(shù)方案,用于小并發(fā)場(chǎng)景,特別是在組網(wǎng)環(huán)境好的有線環(huán)境下,使用RTSP服務(wù)配合組播,是也是好多開發(fā)者考量的因素之一。
鑒于此,大牛直播SDK(Github)發(fā)布了輕量級(jí)RTSP服務(wù),廢話不多說,先上架構(gòu)圖:
輕量級(jí)RTSP服務(wù)功能支持
- ?[音頻格式]AAC;
- ?[視頻格式]H.264、H.265;
- ?[協(xié)議類型]RTSP;
- ?[傳輸模式]支持單播和組播模式;
- ?[端口設(shè)置]支持RTSP端口設(shè)置;
- ?[鑒權(quán)設(shè)置]支持RTSP鑒權(quán)用戶名、密碼設(shè)置;
- ?[獲取session連接數(shù)]支持獲取當(dāng)前RTSP服務(wù)會(huì)話連接數(shù);
- ?[多服務(wù)支持]支持同時(shí)創(chuàng)建多個(gè)內(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)到上層。
單播不再贅述,這里重點(diǎn)介紹下我們的組播技術(shù)方案:
組播解決的主要痛點(diǎn)是服務(wù)器部署和帶寬占用問題,一般來說,內(nèi)網(wǎng)電子教室/無紙化/實(shí)時(shí)同屏場(chǎng)景用RTMP推送+RTMP服務(wù)器,然后其他端從服務(wù)器拉取RTMP流,這個(gè)方案的劣勢(shì)在于,如果單獨(dú)部署服務(wù)器,需要額外的機(jī)器,增加了成本開銷,如果教師端機(jī)器作為服務(wù)器,網(wǎng)絡(luò)和機(jī)器性能雙重壓力下,負(fù)荷過重。
通過組播技術(shù)方案,只要網(wǎng)絡(luò)設(shè)備支持組播組網(wǎng),輕松實(shí)現(xiàn)多并發(fā)的同屏/攝像頭直播場(chǎng)景。
廢話不多說,先上圖:
大牛直播SDK組播方案開啟如下:
1. 設(shè)置需要共享的視音頻,設(shè)置碼率后,點(diǎn)擊“配置查看Rtsp服務(wù)”,選中“組播”和“SSM”選項(xiàng),點(diǎn)擊啟動(dòng)服務(wù)即可:
2. 確定后,返回主界面,點(diǎn)擊“發(fā)布Rtsp流”,拷貝回調(diào)的RTSP url,用我們的SmartPlayer.exe或移動(dòng)端播放器,播放即可。
注意:需要內(nèi)網(wǎng)網(wǎng)絡(luò)設(shè)備支持組播功能。
經(jīng)長(zhǎng)時(shí)間測(cè)試,毫秒級(jí)延遲,完全滿足內(nèi)網(wǎng)同屏技術(shù)指標(biāo),更重要的是,在組播同時(shí),還可以同步支持內(nèi)外網(wǎng)RTMP推送、RTSP推送和實(shí)時(shí)錄像功能。
內(nèi)置RTSP服務(wù)核心接口(以Windows C++ 接口為例:nt_smart_publisher_sdk.h):
/*+++rtsp server操作接口+++*//** 創(chuàng)建一個(gè)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: 端口號(hào),可以設(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)用戶名和密碼, 這個(gè)可以不設(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è)置成組播就不能單播,組播和單播只能選一個(gè), 一般來說單播網(wǎng)絡(luò)設(shè)備支持的好,wifi組播很多路由器不支持* rtsp_server_handle: rtsp server 句柄* is_multicast: 是否組播, 1為組播, 0為單播, 其他值接口返回錯(cuò)誤, 默認(rèn)是單播* 成功返回 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è)置的不是組播地址, 將返回錯(cuò)誤* 組播地址范圍說明: [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當(dāng)前的客戶會(huì)話數(shù), 這個(gè)接口必須在StartRtspServer之后再調(diào)用* rtsp_server_handle: rtsp server 句柄* session_numbers: 會(huì)話數(shù)* 成功返回 NT_ERC_OK*/NT_UINT32(NT_API *GetRtspServerClientSessionNumbers)(NT_HANDLE rtsp_server_handle, NT_INT32* session_numbers);/** 啟動(dòng)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)用這個(gè)接口之后rtsp_server_handle失效,* 成功返回 NT_ERC_OK*/NT_UINT32 (NT_API *CloseRtspServer)(NT_HANDLE rtsp_server_handle);/*---rtsp server操作接口---*/本文權(quán)當(dāng)拋磚引玉,感興趣的開發(fā)者,可以參考看看。
總結(jié)
以上是生活随笔為你收集整理的内网无纸化会议/智慧教室实时同屏RTSP组播技术方案思考的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PP视频如何查看上下集的快捷键
- 下一篇: 【Python】如何用python做一个