亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Janus網關的WebRTC音視頻客戶端設計與實現

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

        張遠 劉偉 董顯平 蔡樹培

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

        【關鍵字】? ? WebRTC? ? Janus網關? ? 音視頻客戶端

        一、WebRTC技術簡介

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

        二、Janus網關介紹

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

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

        三、音視頻客戶端設計

        以下從技術框架及架構設計兩個方面來介紹本音視頻客戶端的設計。

        3.1技術框架

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

        3.2架構設計

        下圖為整個系統(tǒng)的架構設計圖。整個系統(tǒng)包括Janus網關,Web應用服務,數據庫及內網透傳服務器四部分。

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

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

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

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

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

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

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

        四、各項功能的實現

        4.1音視頻設備調試

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

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

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

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

        下圖2為音視頻設備調試功能的頁面截屏。

        4.2放映廳

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

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

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

        塊狀元素來展現Janus網關中配置好的音視頻播放源點的列表,供選取播放。另外需要放置一個
        国产aⅴ无码专区亚洲av麻豆| 亚洲一二三四五中文字幕| 日本不卡一区二区三区在线视频| 精品无人码麻豆乱码1区2区| 波多野结衣中文字幕久久| 一区二区在线亚洲av蜜桃| 麻豆成年人视频在线观看| 一边摸一边抽搐一进一出视频| 男人添女人下部高潮全视频| 亚洲高潮喷水中文字幕| 亚洲日本精品一区二区三区 | 99久热在线精品视频观看| 亚洲另类精品无码专区| 久久久www成人免费无遮挡大片| 色婷婷精品大在线视频| 丰满人妻被两个按摩师| 一本一道波多野结衣一区| 亚洲无码性爱视频在线观看| 亚洲专区路线一路线二网| 国产乱子轮xxx农村| 亚洲熟妇av乱码在线观看| 国产高潮精品一区二区三区av| 久久精品亚州中文字幕| 毛片a级毛片免费观看| 国产97色在线 | 免| 亚洲大胆美女人体一二三区| 99久久精品免费看国产| 97人妻熟女成人免费视频| 亚洲人妻中文字幕在线视频 | 人人鲁人人莫人人爱精品| 国产人澡人澡澡澡人碰视频| 午夜人妻中文字幕福利| 青青草亚洲视频社区在线播放观看| 欧美性受xxxx白人性爽| 天天干夜夜躁| 国产精品一区二区久久蜜桃| 国产二区交换配乱婬| av在线色| 国产99视频一区二区三区| av人摸人人人澡人人超碰下载| 久久中文精品无码中文字幕|