<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      如何實現(xiàn)純網(wǎng)頁語音視頻聊天和桌面分享?(附源碼,PC版+手機版)

        在網(wǎng)頁里實現(xiàn)文字聊天是比較容易的,但若要實現(xiàn)視頻聊天,就比較麻煩了。本文將實現(xiàn)一個純網(wǎng)頁版的視頻聊天和桌面分享的Demo,可直接在瀏覽器中運行,不需要安裝任何插件。

      一. 主要功能及支持平臺

      1.本Demo的主要功能有

      (1)一對一語音視頻聊天。

      (2)遠(yuǎn)程桌面觀看。

      (3)當(dāng)客戶端掉線時,會進行自動重連,當(dāng)網(wǎng)絡(luò)恢復(fù)后,重連成功。

      2.支持的平臺

      (1)支持的操作系統(tǒng)包括:Windows、信創(chuàng)國產(chǎn)Linux(銀河麒麟、統(tǒng)信UOS)、Android、iOS、Mac、鴻蒙OS。

      (2)支持的CPU架構(gòu):X86/X64、ARM、MIPS、Loongarch。

      (3)支持幾乎所有的主流瀏覽器:Chrome、Edge、Firefox、Safari、360瀏覽器、QQ瀏覽器等。    

      (4)另外,我們測試過,使用APP套殼,在WebView控件中加載Demo頁面,也是可以正常視頻聊天的。

               如此,可以在C/S架構(gòu)的客戶端或手機APP中嵌入WebView控件來引入視頻聊天或桌面分享功能的。

      二. 開發(fā)環(huán)境

      1. 服務(wù)端:

          服務(wù)端開發(fā)環(huán)境是 Visual Sudio 2022 ,開發(fā)語言是 C# 。

      2. Web端:

          PC版Web開發(fā)環(huán)境是 VS Code 1.85 ,使用 vue 3。

          手機版Web開發(fā)環(huán)境是 HBuilder 3.8.12,uni-app(導(dǎo)出H5)。

      三. 運行效果

           此Demo的源碼分為三個部分,分別是服務(wù)端,PC端Web(橫版)和手機端Web(豎版)。接下來首先來看移動端Web的運行效果。 

      (1)首先是登錄界面,在登錄界面有三個輸入框,依次為服務(wù)器IP、用戶賬號和用戶密碼,在本Demo中,用戶賬號和用戶密碼均可隨便填寫。           

                

      (2)接下來是首頁界面,首頁界面有一個已連接的提示框,代表的意思是目前與服務(wù)端是連接狀態(tài),當(dāng)因為網(wǎng)絡(luò)原因或者其他原因斷開時,則會提示已斷開連接。   

                

      (3)發(fā)起視頻聊天,輸入對方的賬號,然后點擊請求視頻會話按鈕即可向?qū)Ψ桨l(fā)起視頻聊天請求,對方接受請求和即可聊天了。    

               下圖是手機端視頻聊天效果:

                 

      注意:手機端是不支持分享自己的桌面的,但是移動端可以觀看PC端桌面。

      (4)接下來看看一下PC端的運行效果。

               登錄之后主頁界面,左上角是關(guān)于自己的一些信息,右邊窗口則是顯示連接對方的攝像頭或者桌面。    

                 

      (4)下圖是在PC端觀看他人桌面。

               輸入對方的賬號,然后點擊請求遠(yuǎn)程桌面,在對方同意后便可以觀看別人的屏幕了。  

               

      四. 服務(wù)端源碼說明

              注意,由于瀏覽器的限制,如果你要將Web端部署到公網(wǎng)上,需要使用HTTPS協(xié)議,否則無法訪問攝像頭。

              與之對應(yīng)的,服務(wù)端也需要使用到WSS協(xié)議,因此需要準(zhǔn)備一份SSL證書用于部署。如果你僅僅只是在本地運行看一下效果,則無需準(zhǔn)備。

         

              上圖為服務(wù)端初始化代碼,若不打算部署只是在瀏覽器中加載本地Demo頁面,則應(yīng)將上圖中的第六行注釋掉,并將第七行中MultimediaServerFactory.CreateMultimediaServer方法中的wssOption用null替換掉。

         若打算將網(wǎng)站部署在服務(wù)器上,則需要將第五行X509Certificate2中的兩個參數(shù)分別修改為你證書的路徑和密碼。

      五. Web端源碼說明

             本Demo的中的Web端包含兩套代碼,其中移動端Web采用Uniapp進行開發(fā),PC端Web采用Vue框架進行開發(fā)。為了便于理解,下面對源碼中的關(guān)鍵點進行講解說明,兩套代碼邏輯基本相同,因此這里不作區(qū)分。 

      1. 消息定義

      在本Demo中,我們定義了10個消息類型,用于Web端之間進行通信,其定義如下:

      const informationTypes = {
        // 視頻請求
        VideoRequest: 0,
      
        // 回復(fù)視頻請求的結(jié)果
        VideoResult: 1,
      
        // 通知對方 掛斷 視頻連接
        CloseVideo: 2,
      
        // 通知好友 網(wǎng)絡(luò)原因,導(dǎo)致 視頻中斷
        NetReasonCloseVideo: 3,
      
        // 通知對方(忙線中) 掛斷 視頻連接
        BusyLine: 4,
      
        // 遠(yuǎn)程桌面請求
        DesktopRequest: 5,
      
        // 回復(fù)遠(yuǎn)程桌面請求的結(jié)果
        DesktopResult: 6,
      
        // 主動取消遠(yuǎn)程桌面請求
        CancelDesktop: 7,
      
        // 對方(主人端)主動斷開遠(yuǎn)程桌面
        OwnerCloseDesktop: 8,
      
        // 客人端斷開遠(yuǎn)程桌面連接
        GuestCloseDesktop: 9
      };

            由于這些消息類型經(jīng)常會使用到,因此需要將其放到一個全局都能訪問到的地方,在移動端Web源碼中,它被放在了Vuex中。而在PC端Web源碼中,它放在src目錄下的omcs目錄下。 

      2. 自定義消息處理器

           在登錄成功后的這個時機,通過調(diào)用多媒體管理器上的 SetCustomMessageReceivedCallback 方法,我們向 multimediaManager(多媒體管理器)注冊一個回調(diào)函數(shù),這個回調(diào)函數(shù)會在接收到其他用戶或服務(wù)端的消息時被觸發(fā)。

            這個回調(diào)函數(shù)會接收一個對象類型的參數(shù),其中包含了消息的類型和消息發(fā)起者的用戶名數(shù)據(jù),然后就可以根據(jù)消息的類型來完成自己的業(yè)務(wù)操作了。下圖是本Demo中定義的消息處理器:  

            

      3. 一對一語音視頻

            在本Demo中,一對一語音視頻聊天功能的實現(xiàn)邏輯簡而言之就是:例如用戶A想要與用戶B視頻聊天,那么用戶A向用戶B發(fā)送VideoRequest消息,在用戶B收到來自用戶A的VideoRequest消息時選擇同意與否,并將攜帶用戶B意愿數(shù)據(jù)的VideoResult消息發(fā)送用戶A。

      // 請求視頻會話
      const videoRequest = async () => {
        // ...
        multimediaManager.sendCustomMessage(targetUsername.value, InformationTypes.VideoRequest, null, null);
        // ...
      };
      
      // 響應(yīng)視頻會話
      const videoResult = (flag) => {
        // ...
        multimediaManager.sendCustomMessage(targetUsername.value, InformationTypes.VideoResult, [flag ? 1 : 0], "");
        // ...
      };

      4. 桌面分享

           與一對一語音視頻聊天功能類似,實現(xiàn)桌面分享也是一方發(fā)起請求,一方進行回應(yīng)。與語音視頻對應(yīng)的,桌面分享的請求的消息類型為DesktopRequest,響應(yīng)的消息類型為DesktopResult。

      5. 斷網(wǎng)重連

           在網(wǎng)絡(luò)斷開時,用戶進入掉線狀態(tài)(與服務(wù)器斷開),每5秒會進行與服務(wù)器的重新連接。提前向多媒體管理器注入ConnectionInterrupted和ConnectionRebuildSucceed回調(diào),能夠在與媒體服務(wù)器斷開和重新連接成功時做一些事情。 

      六. 如何在本地部署運行Web端

           Web端包含兩套代碼,其中移動端Web的目錄是H5MediaDemo_WebH5,PC端Web的目錄是H5MediaDemo_WebPC。 

      1. 移動端web:

            由于移動端web是采用uniapp開發(fā)的,而uniapp項目需要通過HBuilder X來運行,因此,你需要在電腦上安裝一個HBuilder X,然后在HBuilderX中打開運行——>運行到瀏覽器,然后選擇一個瀏覽器就可以運行起來了,如下圖:

             

      2. PC端web:

             PC端采用Vue3開發(fā)的,需要依賴NodeJS環(huán)境,因此,你需要在電腦上安裝一個NodeJS(建議安裝長期維護版)。在安裝完后,通過在命令行窗口輸入node -v和npm - v來檢查是否安裝成功:      

             

             確定安裝成功后,通過命令行進入到H5MediaDemo_WebPC的項目根目錄,然后輸入npm run dev即可將項目運行起來。 

             

      七. 源碼下載

      (1)PC版源碼

      (2)手機版源碼

            另外,我們已經(jīng)部署好了測試服務(wù)器,以方便測試。

      (1)PC  Web 測試網(wǎng)址 

      (2)手機 Web 測試網(wǎng)址

            網(wǎng)頁版視頻聊天Demo實現(xiàn)的介紹就到這里了,謝謝!

       

      posted @ 2024-01-19 12:12  zhuweisky  閱讀(2031)  評論(5)    收藏  舉報
      主站蜘蛛池模板: 久久人人爽人人爽人人av| 猫咪网网站免费观看| 视频一区视频二区卡通动漫| 国产精品+日韩精品+在线播放| 无码人妻丰满熟妇啪啪欧美| 久久国产成人午夜av影院| 亚洲开心婷婷中文字幕| 无码少妇一区二区| 一区二区三区四区五区黄色| 亚洲熟妇精品一区二区| 欧美成人精品手机在线| 国产高清一区二区不卡| 国产成人综合在线女婷五月99播放 | 亚洲美女厕所偷拍美女尿尿| xxxx丰满少妇高潮| 亚洲高清WWW色好看美女| 自拍偷在线精品自拍偷免费| 国产精品亚洲二区在线播放| 久久国产精品老人性| 午夜羞羞影院男女爽爽爽| 国产精品午夜福利资源| 国产成人精品亚洲午夜| 欧洲亚洲国内老熟女超碰| 丁香五月网久久综合| 国产二区三区不卡免费| 久久三级国内外久久三级| 国产免费一区二区不卡| 亚洲国产午夜精品理论片妓女| 亚洲精品尤物av在线网站| 97免费在线观看视频| 狠狠色综合久久狠狠色综合| 亚洲精品成人区在线观看 | 福利在线视频一区二区| 日本怡春院一区二区三区| 精品一二三四区在线观看| 精品91在线| 久久狠狠一本精品综合网| 国产精品二区中文字幕| 色爱综合激情五月激情| 无码人妻出轨黑人中文字幕| 婷婷六月天在线|