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網關中配置好的音視頻播放源點的列表,供選取播放。另外需要放置一個
主站蜘蛛池模板: 国产精品久线在线观看| 香蕉视频在线观看www| 免费啪啪网址| 浮力影院国产第一页| 美女无遮挡免费网站| 欧美日韩中文国产| 在线看国产精品| 四虎国产精品永久一区| 色播五月婷婷| 伊人91在线| 综合亚洲网| 无码综合天天久久综合网| 色哟哟国产成人精品| 亚洲天堂日本| 欧美激情,国产精品| 日本尹人综合香蕉在线观看 | 91久久国产综合精品女同我| 国产精品中文免费福利| 日韩精品无码免费一区二区三区 | 好吊妞欧美视频免费| 精品视频一区在线观看| 成人无码一区二区三区视频在线观看| 欧美午夜在线播放| 重口调教一区二区视频| 中文字幕免费视频| 一本大道AV人久久综合| 国产视频自拍一区| 亚洲AV无码不卡无码 | 天天摸天天操免费播放小视频| 夜夜操天天摸| 亚洲最新网址| 久久精品国产免费观看频道| 全色黄大色大片免费久久老太| 无码中文AⅤ在线观看| 国产经典免费播放视频| 亚洲性影院| 国产成人三级| 亚洲经典在线中文字幕| 色精品视频| 久久国产精品77777| 国产精品人成在线播放| 国产香蕉在线视频| 天天色综网| 成人噜噜噜视频在线观看| 国产欧美精品一区aⅴ影院| 国产精品成人第一区| 人妻一区二区三区无码精品一区 | 中文字幕无码电影| 日本午夜在线视频| 无码专区国产精品一区| 手机成人午夜在线视频| 久久夜色撩人精品国产| 乱码国产乱码精品精在线播放 | 国产资源站| Aⅴ无码专区在线观看| 无码综合天天久久综合网| 久久精品91麻豆| 免费欧美一级| 亚洲欧美精品日韩欧美| 亚洲三级电影在线播放| 丁香五月激情图片| 国产精品伦视频观看免费| 国产成人精品视频一区二区电影| 欧美亚洲国产一区| 婷婷六月激情综合一区| 国产成人亚洲毛片| 青青久久91| 手机在线国产精品| 日韩一区二区三免费高清| 一区二区三区四区日韩| 91视频首页| 欧美精品亚洲精品日韩专区va| 456亚洲人成高清在线| 国产亚洲精品无码专| 99尹人香蕉国产免费天天拍| 91精品人妻互换| 激情乱人伦| 久久久久久国产精品mv| 99热国产这里只有精品无卡顿"| 久久国产av麻豆| 免费高清自慰一区二区三区| 伊人丁香五月天久久综合|