999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2021-08-09 01:53:53張遠劉偉董顯平蔡樹培
中國新通信 2021年10期
關鍵詞:頁面用戶功能

張遠 劉偉 董顯平 蔡樹培

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

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

一、WebRTC技術簡介

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

二、Janus網關介紹

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

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

三、音視頻客戶端設計

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

3.1技術框架

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

3.2架構設計

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

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

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

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

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

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

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

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

四、各項功能的實現

4.1音視頻設備調試

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

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

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

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

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

4.2放映廳

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

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

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

塊狀元素來展現Janus網關中配置好的音視頻播放源點的列表,供選取播放。另外需要放置一個
主站蜘蛛池模板: 亚洲床戏一区| 久久6免费视频| 亚洲第一黄片大全| 丁香五月激情图片| 性69交片免费看| 国产精品偷伦在线观看| 美女无遮挡被啪啪到高潮免费| 日韩国产综合精选| 国产精品男人的天堂| 国产欧美日韩va| 又黄又湿又爽的视频| 国产成人在线小视频| 欧美日本在线播放| 亚洲国产成人在线| 国产精品亚洲五月天高清| 国产精品久久久久鬼色| 国产一区二区福利| 国产成人精品第一区二区| 日韩av无码精品专区| 亚洲永久精品ww47国产| 91精品人妻互换| 亚洲精品成人7777在线观看| 国产白浆在线观看| 午夜综合网| 国内精品久久九九国产精品| 国产女人综合久久精品视| 狠狠久久综合伊人不卡| 日韩在线成年视频人网站观看| 亚洲第一精品福利| 国产在线欧美| 免费国产黄线在线观看| 日韩美女福利视频| 色偷偷一区二区三区| 久久久亚洲色| 伊人久久久久久久| 国产欧美亚洲精品第3页在线| 亚洲色图欧美一区| 一级毛片免费的| 亚洲视频一区在线| 三上悠亚精品二区在线观看| 97视频在线精品国自产拍| 人妖无码第一页| AV无码无在线观看免费| 97青草最新免费精品视频| 91啪在线| 在线国产资源| 日本妇乱子伦视频| 精品夜恋影院亚洲欧洲| 亚洲熟女中文字幕男人总站 | 乱人伦中文视频在线观看免费| 亚洲午夜片| av天堂最新版在线| 亚洲无码A视频在线| 蜜臀AV在线播放| 99这里只有精品在线| 成人亚洲国产| 欧美色综合久久| 中文字幕第1页在线播| 欧美性爱精品一区二区三区 | 国产jizzjizz视频| 毛片免费在线| 日韩精品高清自在线| 国产中文在线亚洲精品官网| 国产精品入口麻豆| 日本尹人综合香蕉在线观看 | 91国内在线视频| 亚洲va视频| 国产成人亚洲毛片| 欧美日本二区| 国产原创第一页在线观看| 亚洲中文字幕在线一区播放| 国产99精品久久| 在线a网站| 在线观看免费人成视频色快速| 国产网站免费看| 亚洲va在线观看| 欧美成人一级| 毛片免费试看| 九色在线观看视频| 国产超薄肉色丝袜网站| 国内毛片视频| 久久久久久久97|