• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Janus網(wǎng)關(guān)的WebRTC音視頻客戶端設(shè)計與實現(xiàn)

      2021-08-09 01:53:53張遠劉偉董顯平蔡樹培
      中國新通信 2021年10期
      關(guān)鍵詞:音視頻插件網(wǎng)關(guān)

      張遠 劉偉 董顯平 蔡樹培

      【摘要】? ? 隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,實時音視頻應(yīng)用正逐步融入到人們?nèi)粘5墓ぷ鳌W(xué)習、生活中,在會議協(xié)作、在線教育、智慧工廠、網(wǎng)絡(luò)直播等行業(yè)取得了良好的效益。本文在介紹WebRTC技術(shù)的基礎(chǔ)上,基于Janus網(wǎng)關(guān)設(shè)計并實現(xiàn)了一個在瀏覽器中運行的音視頻客戶端系統(tǒng),具備音視頻設(shè)備調(diào)試,音視頻直播放映,基于SIP協(xié)議的Web話機,會議協(xié)作等功能,具有跨平臺,即點即用,低成本,穩(wěn)定可靠等特點,論證了使用Janus網(wǎng)關(guān)開發(fā)WebRTC應(yīng)用的可行性。

      【關(guān)鍵字】? ? WebRTC? ? Janus網(wǎng)關(guān)? ? 音視頻客戶端

      一、WebRTC技術(shù)簡介

      WebRTC即Web Real-Time Communication(網(wǎng)頁實時通信),是一個Web瀏覽器原生支持的點對點進行實時音頻、視頻通信及通用數(shù)據(jù)傳輸?shù)募夹g(shù),提供了包括客戶端音視頻采集、編解碼、網(wǎng)絡(luò)傳輸、顯示等一系列核心功能,為Web開發(fā)者提供了應(yīng)用程序接口(API),支持Windows, Linux, MacOS, Android, iOS等多種操作系統(tǒng)間跨平臺通信[1]。

      二、Janus網(wǎng)關(guān)介紹

      Janus網(wǎng)關(guān)(Janus Gateway)是由Meetecho公司開發(fā)的開源通用WebRTC服務(wù)器,提供了客戶端間實時音視頻通信,信令交互,RTP/RTCP數(shù)據(jù)包接力轉(zhuǎn)發(fā)等功能,同時封裝了WebRTC的編程接口,屏蔽了各個平臺間WebRTC編程接口的差異,更便利于開發(fā)者進行各種音視頻應(yīng)用的開發(fā)[2]。

      Janus網(wǎng)關(guān)使用C語言開發(fā),代碼架構(gòu)分為核心模塊,插件模塊,插件編程接口模塊,管理、監(jiān)控模塊,事件處理及日志編程接口等模塊。其中核心模塊實現(xiàn)了RTCP/RTP/SRTP/SCTP等數(shù)據(jù)包傳輸協(xié)議以及ICE/STUN/TURN等內(nèi)網(wǎng)透傳協(xié)議;插件模塊實現(xiàn)Janus網(wǎng)關(guān)支持的各項功能,如回聲測試、視頻呼叫、聊天室等,同時支持第三方插件的開發(fā);插件編程接口模塊供開發(fā)者調(diào)用來開發(fā)各項業(yè)務(wù)功能,支持包括HTTP RestFUL、Websocket、RabbitMQ、MQTT、UnixSockets等多種協(xié)議,適用于各種軟件開發(fā)平臺與環(huán)境;管理、監(jiān)控模塊提供服務(wù)器運行狀態(tài)、會話狀態(tài)等詳盡的信息,主要用于調(diào)試及監(jiān)控用途。

      三、音視頻客戶端設(shè)計

      以下從技術(shù)框架及架構(gòu)設(shè)計兩個方面來介紹本音視頻客戶端的設(shè)計。

      3.1技術(shù)框架

      客戶端使用PHP語言的Laravel框架來開發(fā)Web后臺,數(shù)據(jù)庫使用MySQL,Nginx作為Web服務(wù)器。Laravel是一個開源的PHP Web框架,旨在實現(xiàn)Web系統(tǒng)的MVC架構(gòu),其特點包括用戶身份驗證與授權(quán),模塊化的代碼結(jié)構(gòu),提供了連接多種數(shù)據(jù)庫的類庫,提供了一系列的工具來協(xié)助應(yīng)用程序的部署與維護,同時包含許多語法糖。前端使用VueJS框架來開發(fā)頁面邏輯,頁面UI樣式使用ElementUI。VueJS是一套構(gòu)建Web用戶界面的漸進式MVVM框架,其核心庫只關(guān)注視圖層,不僅易于上手,還便于與第三方庫或既有項目整合,其頁面數(shù)據(jù)動態(tài)綁定的特性適合構(gòu)建復(fù)雜的大型Web單頁面應(yīng)用。

      3.2架構(gòu)設(shè)計

      下圖為整個系統(tǒng)的架構(gòu)設(shè)計圖。整個系統(tǒng)包括Janus網(wǎng)關(guān),Web應(yīng)用服務(wù),數(shù)據(jù)庫及內(nèi)網(wǎng)透傳服務(wù)器四部分。

      Janus網(wǎng)關(guān)使用了回聲測試插件,媒體推流插件,SIP協(xié)議插件及視頻會議插件。

      回聲測試插件用來檢查客戶端音頻、視頻設(shè)備的工作狀態(tài),連接到此插件的一個客戶端將會接收到其發(fā)送的音頻、視頻媒體流,通過與本地音視頻進行對比,即可發(fā)現(xiàn)音視頻設(shè)備有沒有正常工作。

      媒體推流插件允許客戶端收聽及觀看錄制好的媒體文件及其他工具生成的實時媒體流,包括三種類型的媒體流,1.按需播放的媒體文件,2.直播形式的媒體文件,3.直播形式的其他工具生成的媒體流。

      SIP協(xié)議插件允許WebRTC客戶端向SIP服務(wù)器注冊用戶,用來支持瀏覽器用戶與SIP話機間通過Janus網(wǎng)關(guān)進行音視頻通信。

      視頻會議插件基于訂閱發(fā)布的模式,讓每一個會議室的用戶都可以發(fā)布其音視頻媒體流,同時會議室的其他成員會收到發(fā)布的通知并開始接收并在頁面中播放,即視頻會議插件支持從單主講人-多聽眾到多方會議的多個應(yīng)用場景。

      Web應(yīng)用后臺連接MySQL數(shù)據(jù)庫,持久化保存用戶信息,設(shè)備信息,會議信息等多種數(shù)據(jù),前端瀏覽器通過Websocket協(xié)議建立與Janus網(wǎng)關(guān)的長連接,用來發(fā)送用戶的各項業(yè)務(wù)請求并接收Janus網(wǎng)關(guān)的響應(yīng)展示給用戶。

      針對內(nèi)網(wǎng)的網(wǎng)絡(luò)環(huán)境還需要配置一臺內(nèi)網(wǎng)穿透服務(wù)器來穿透NAT網(wǎng)絡(luò)進行點對點的音視頻通信。Janus網(wǎng)關(guān)的核心層實現(xiàn)了STUN、ICE等協(xié)議棧來支持內(nèi)網(wǎng)透傳。

      四、各項功能的實現(xiàn)

      4.1音視頻設(shè)備調(diào)試

      此項功能需要在頁面上放置兩個

      塊狀元素用來顯示回傳的文本消息以供比對。

      在頁面的mounted事件中觸發(fā)初始化Janus的方法,在Janus API的init方法中實例化一個Janus對象,并把該對象賦值給頁面全局變量供后續(xù)發(fā)送信令消息使用,在此過程成功的回調(diào)函數(shù)中綁定janus.plugin.echotest插件,綁定插件的方法中同時具備申請設(shè)備使用權(quán)限,媒體狀態(tài),WebRTC狀態(tài),慢連接,消息到達,本地媒體流就緒,對端媒體流就緒,數(shù)據(jù)通道就緒,數(shù)據(jù)到達,發(fā)生錯誤等回調(diào),可以在各回調(diào)函數(shù)中執(zhí)行相應(yīng)的頁面邏輯。關(guān)鍵點在于onlocalstream及onremotestream回調(diào)函數(shù)中通過Janus API的attachMediaStream方法把本地媒體流與對端回傳媒體流分別綁定到本地及對端的

      Janus對象的send方法用來向Janus API發(fā)送用戶指令,如開啟、關(guān)閉音視頻流,切換媒體設(shè)備等操作,具體消息的格式內(nèi)容參見Janus API文檔,這里不做贅述。

      下圖2為音視頻設(shè)備調(diào)試功能的頁面截屏。

      4.2放映廳

      放映廳功能分為管理員和觀看者兩種角色,管理員可以上傳、管理、刪除媒體文件,觀看者可以點選要觀看的媒體在頁面上進行播放。目前支持VP8編碼的視頻以及OPUS編碼的音頻文件的播放。

      管理員上傳音視頻文件后向API發(fā)送create請求來創(chuàng)建媒體文件及第三方播放源點,同時附帶管理員口令、類型、id、名稱、描述信息、元數(shù)據(jù)等信息,收到異步的created響應(yīng)即說明播放源點創(chuàng)建成功。

      觀看者頁面視圖需要放置一個

      塊狀元素來展現(xiàn)Janus網(wǎng)關(guān)中配置好的音視頻播放源點的列表,供選取播放。另外需要放置一個
      江都市| 永川市| 都江堰市| 巴中市| 韩城市| 楚雄市| 通州区| 米易县| 安陆市| 宿州市| 佳木斯市| 忻城县| 会昌县| 岳普湖县| 运城市| 宣汉县| 安远县| 昌黎县| 河池市| 彝良县| 浦城县| 正阳县| 凤台县| 时尚| 获嘉县| 手机| 长汀县| 永顺县| 房产| 墨玉县| 罗定市| 屯昌县| 玛纳斯县| 米易县| 顺昌县| 绥德县| 北辰区| 吴桥县| 虹口区| 永新县| 大宁县|