内网无纸化会议/智慧教室实时同屏RTSP组播技术方案思考
內網環境下,為了滿足內網無紙化/電子教室等內網超低延遲需求,避免讓用戶配置單獨的服務器,好多開發者希望有RTSP的技術方案,用于小并發場景,特別是在組網環境好的有線環境下,使用RTSP服務配合組播,是也是好多開發者考量的因素之一。
鑒于此,大牛直播SDK(Github)發布了輕量級RTSP服務,廢話不多說,先上架構圖:
輕量級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回調到上層。
單播不再贅述,這里重點介紹下我們的組播技術方案:
組播解決的主要痛點是服務器部署和帶寬占用問題,一般來說,內網電子教室/無紙化/實時同屏場景用RTMP推送+RTMP服務器,然后其他端從服務器拉取RTMP流,這個方案的劣勢在于,如果單獨部署服務器,需要額外的機器,增加了成本開銷,如果教師端機器作為服務器,網絡和機器性能雙重壓力下,負荷過重。
通過組播技術方案,只要網絡設備支持組播組網,輕松實現多并發的同屏/攝像頭直播場景。
廢話不多說,先上圖:
大牛直播SDK組播方案開啟如下:
1. 設置需要共享的視音頻,設置碼率后,點擊“配置查看Rtsp服務”,選中“組播”和“SSM”選項,點擊啟動服務即可:
2. 確定后,返回主界面,點擊“發布Rtsp流”,拷貝回調的RTSP url,用我們的SmartPlayer.exe或移動端播放器,播放即可。
注意:需要內網網絡設備支持組播功能。
經長時間測試,毫秒級延遲,完全滿足內網同屏技術指標,更重要的是,在組播同時,還可以同步支持內外網RTMP推送、RTSP推送和實時錄像功能。
內置RTSP服務核心接口(以Windows C++ 接口為例:nt_smart_publisher_sdk.h):
/*+++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组播技术方案思考的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PP视频如何查看上下集的快捷键
- 下一篇: 20天吃透 PyTorch 中文版(附下