面向内网无纸化会议/智慧教室/实时同屏,组播还是RTMP?
一、背景
為滿足內(nèi)網(wǎng)無紙化/電子教室等內(nèi)網(wǎng)超低延遲需求,避免讓用戶配置單獨的服務(wù)器,我們研發(fā)了輕量級RTSP服務(wù)開發(fā)包。
單播不再贅述,這里重點介紹下我們的組播技術(shù)方案:
組播解決的主要痛點是服務(wù)器部署和帶寬占用問題,一般來說,內(nèi)網(wǎng)電子教室/無紙化/實時同屏場景用RTMP推送+RTMP服務(wù)器,然后其他端從服務(wù)器拉取RTMP流,這個方案的劣勢在于,如果單獨部署服務(wù)器,需要額外的機器,增加了成本開銷,如果教師端機器作為服務(wù)器,網(wǎng)絡(luò)和機器性能雙重壓力下,負荷過重。
通過組播技術(shù)方案,只要網(wǎng)絡(luò)設(shè)備支持組播組網(wǎng),輕松實現(xiàn)多并發(fā)的同屏/攝像頭直播場景。
但是,組播的劣勢在于,高碼率的無線網(wǎng)絡(luò)環(huán)境體驗很差,也就是說,如果是Windows或者Android平臺推送,Android無線PAD播放,真正好用的,還是RTMP推拉流技術(shù)解決方案。
二、基于組播的技術(shù)方案
1. 設(shè)置需要共享的視音頻,設(shè)置碼率后,點擊“配置查看Rtsp服務(wù)”,選中“組播”和“SSM”選項,點擊啟動服務(wù)即可:
2. 確定后,返回主界面,點擊“發(fā)布Rtsp流”,拷貝回調(diào)的RTSP url,用我們的SmartPlayer.exe或移動端播放器,播放即可。
注意:需要內(nèi)網(wǎng)網(wǎng)絡(luò)設(shè)備支持組播功能。
經(jīng)長時間測試,毫秒級延遲,完全滿足內(nèi)網(wǎng)同屏技術(shù)指標。
內(nèi)置RTSP服務(wù)核心接口(以Windows C++ 接口為例:nt_smart_publisher_sdk.h):
/*+++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操作接口---*/三、基于RTMP的技術(shù)方案
注意事項
1. 組網(wǎng):無線組網(wǎng),需要好的AP模塊才能撐得住大的并發(fā)流量,推送端到AP,最好是有線網(wǎng)鏈接;
2. 服務(wù)器部署:如果Windows平臺,可以考慮NGINX,如果是Linux,可以考慮SRS或NGINX,服務(wù)器可以和Windows平臺的教師機部署在一臺機器;
3. 教師端:如教師有移動的PAD,可以直接推到RTMP服務(wù)器,然后共享出去;
4. 學(xué)生端:直接拉取RTMP流播放即可;
5. 教師和學(xué)生互動:學(xué)生端如需作為示范案例,屏幕數(shù)據(jù)共享給其他同學(xué),只需請求同屏,數(shù)據(jù)反推到RTMP服務(wù)器,其他學(xué)生查看即可。
6. 擴展監(jiān)控:如果需要更進一步的技術(shù)方案,如教師端想監(jiān)控學(xué)生端的屏幕情況,可以有兩種方案,如學(xué)生端直接推RTMP過來,或者,學(xué)生端啟動內(nèi)置RTSP服務(wù),教師端想看的時候,隨時看即可(亦可輪詢播放)。
RTMP延遲大,這種說法,相對片面,好多是由于推拉流模塊本身問題導(dǎo)致(如果服務(wù)器系NIGNX或SRS,基本可排除服務(wù)器轉(zhuǎn)發(fā)導(dǎo)致的大時延,不要再賴服務(wù)器了),從我們官方和實際場景來看,RTMP整體技術(shù)方案,延遲可做到1秒內(nèi),毫秒級。
總結(jié)
以上是生活随笔為你收集整理的面向内网无纸化会议/智慧教室/实时同屏,组播还是RTMP?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【深度学习】解决物体检测中的小目标问题
- 下一篇: 荒唐!获得杰青的北大教授,竟被本科生质疑