国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用Swoole協(xié)程實(shí)現(xiàn) WebRTC 信令服務(wù)器

這篇具有很好參考價(jià)值的文章主要介紹了使用Swoole協(xié)程實(shí)現(xiàn) WebRTC 信令服務(wù)器。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、什么是WebRTC

WebRTC技術(shù)是激烈的開(kāi)放的Web戰(zhàn)爭(zhēng)中一大突破-Brendan Eich, inventor of JavaScript。

簡(jiǎn)單來(lái)說(shuō),WebRTC 是一個(gè)音視頻處理+及時(shí)通訊的開(kāi)源庫(kù)。在實(shí)時(shí)通信中,音視頻的采集和處理是一個(gè)很復(fù)雜的過(guò)程。比如音視頻流的編解碼、降噪和回聲消除等。由Google發(fā)起開(kāi)源,其中包含視頻音頻采集,編解碼,數(shù)據(jù)傳輸,音視頻展示等功能,我們可以通過(guò)技術(shù)快速地構(gòu)建出一個(gè)音視頻通訊應(yīng)用。雖然其名為WebRTC,但是實(shí)際上它不只是支持Web之間的音視頻通訊,還支持Android以及IOS端,此外由于該項(xiàng)目是開(kāi)源的,我們也可以通過(guò)編譯C++代碼,從而達(dá)到全平臺(tái)的互通。

WebRTC的架構(gòu)圖為:

使用Swoole協(xié)程實(shí)現(xiàn) WebRTC 信令服務(wù)器,swoole,webrtc,服務(wù)器

(圖片來(lái)自網(wǎng)絡(luò))

我們可以看到模塊化和分層的設(shè)計(jì),我們文章的目的是演示瀏覽器端對(duì)端的連接流程,焦點(diǎn)是服務(wù)端信令服務(wù)器的實(shí)現(xiàn)方式,但需要提前介紹一些WebRTC的基本概念和連接流程。

二、基礎(chǔ)概念

流和軌

  • Track 軌道,可以理解每一路音頻或視頻,為一個(gè)軌,互不相交,類(lèi)比火車(chē)軌道。

  • MediaStream 媒體流,每個(gè)媒體流中包含若干軌道,可以將音頻軌,視頻軌打包在一起。

三、幾個(gè)關(guān)鍵類(lèi)

  • MediaStream 媒體流類(lèi),MeidiaStream用于將多個(gè)MediaStreamTrack對(duì)象打包到一起。一個(gè)MediaStream可包含audio track 與video track,并且可以添加或者刪除。

  • RTCPeerConnection 連接類(lèi),包含非常多重要功能,屏蔽復(fù)雜技術(shù)細(xì)節(jié),便于應(yīng)用層使用,包括但不限于連接管理,P2P類(lèi)型檢測(cè),NAT穿透,中轉(zhuǎn)等。

  • RTCDataChannel 非音視頻數(shù)據(jù)傳輸類(lèi),這個(gè)類(lèi)在我們的例子中沒(méi)有涉及到。可以簡(jiǎn)單理解為將媒體流信息或者數(shù)據(jù)信息塞到連接中,進(jìn)行傳輸。

四、端對(duì)端連接流程

兩個(gè)不同網(wǎng)絡(luò)環(huán)境瀏覽器,要實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的實(shí)時(shí)音視頻對(duì)話(huà),需要處理那些問(wèn)題?

媒體協(xié)商

雙方需要知道對(duì)方支持的媒體格式,SDP(Session Description Protocol)是一種會(huì)話(huà)描述協(xié)議,視頻通訊的雙方必須先交換SDP信息,才能進(jìn)一步互相通信。

網(wǎng)絡(luò)協(xié)商

雙方要了解對(duì)方的網(wǎng)絡(luò)情況,嘗試尋求一個(gè)可以互相通訊的鏈路,其中有尋路選擇,如果確實(shí)沒(méi)辦法建立點(diǎn)對(duì)點(diǎn)鏈路,會(huì)使用中繼服務(wù)器來(lái)進(jìn)行轉(zhuǎn)發(fā)。如果是內(nèi)網(wǎng),或者大部分NAT網(wǎng)絡(luò)環(huán)境下,是可以建立端到端連接。在解決網(wǎng)絡(luò)打通問(wèn)題時(shí)候,有幾個(gè)概念。

  • STUN(Session Traversal Utilities for NAT,NAT會(huì)話(huà)穿越應(yīng)用程序)是一種網(wǎng)絡(luò)協(xié)議,它允許位于NAT后的客戶(hù)端找出自己的公網(wǎng)地址,查出自己位于哪種類(lèi)型的NAT之后以及NAT在公網(wǎng)的端口映射信息。這些信息被用來(lái)在兩端創(chuàng)建UDP連接通信。

  • TURN (Traversal Using Relays around NAT),如果客戶(hù)端在NAT之后, 那么在一些網(wǎng)絡(luò)情景下,有可能建立點(diǎn)對(duì)點(diǎn)的通訊連接,這時(shí)就需要公網(wǎng)的服務(wù)器作為一個(gè)中繼, 對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā)。

學(xué)習(xí)過(guò)程中,STUN和TURN服務(wù)器我們可使用coturn開(kāi)源項(xiàng)目來(lái)搭建。

數(shù)據(jù)交換服務(wù)-信令服務(wù)器

WebRTC實(shí)現(xiàn)并沒(méi)有規(guī)定信令服務(wù)器的實(shí)現(xiàn)方式和相關(guān)協(xié)議,這給了業(yè)務(wù)方技術(shù)選型極大的靈活。我們今天就是使用PHP+Swoole協(xié)程實(shí)現(xiàn)一個(gè)簡(jiǎn)單信令服務(wù)器。下面是一個(gè)端到端連接的流程圖,整個(gè)核心流程邏輯都在圖里面。

使用Swoole協(xié)程實(shí)現(xiàn) WebRTC 信令服務(wù)器,swoole,webrtc,服務(wù)器

(圖片來(lái)自網(wǎng)絡(luò))

五、使用Swoole實(shí)現(xiàn)信令服務(wù)器

客戶(hù)端代碼模擬???????文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-843485.html

<body><div style="display: block">    <button class="btn" onclick="start()">連接</button>    <button class="btn" onclick="leave()">離開(kāi)</button></div><div>    <div class="videos">        <h1>Local</h1>        <video id="localVideo" autoplay></video>    </div>    <div class="videos">        <h1>Remote</h1>        <video id="remoteVideo" autoplay></video>    </div></div><script src="assets/js/adapter.js"></script><script type="text/javascript">    const ws_config = '<?= $signaling_server ?>';    const localVideo = document.getElementById('localVideo');    const remoteVideo = document.getElementById('remoteVideo');    const configuration = {
          iceServers: [{
              urls: '<?= $stun_server ?>'        }]    };
    let room_id = getQueryVariable('room_id');    if (room_id == '' || room_id == null) {
          room_id = Math.random().toString(36).slice(-8);        location.href = '?room_id=' + room_id;    }    let subject = 'room-' + room_id;//當(dāng)前主題    let answer = 0;    let ws = null;    let pc, localStream;
    function getMediaStream(stream) {
          localVideo.srcObject = localStream;        localStream = stream;    }
    function start() {
          ws = new WebSocket(ws_config);        ws.onopen = function (e) {
              subscribe(subject);            if (!navigator.mediaDevices || !navigator.mediaDevices.getUserMedia) {
                  console.error('the getUserMedia is not supported!');  

到了這里,關(guān)于使用Swoole協(xié)程實(shí)現(xiàn) WebRTC 信令服務(wù)器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀(guān)點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • WebRTC的學(xué)習(xí)(java版本信令服務(wù))

    WebRTC的學(xué)習(xí)(java版本信令服務(wù))

    1.1 文檔教學(xué) ? WebRTC中文網(wǎng):http://webrtc.p2hp.com/#google_vignette ? WebRTC中文社區(qū):https://webrtc.org.cn/ ? WebRTC英文官網(wǎng):https://webrtc.org/ ? WebRTC安全相關(guān):http://webrtc-security.github.io/ ? coturn開(kāi)源地址:https://github.com/coturn/coturn ? stun、trun測(cè)試網(wǎng)站:https://webrtc.github.io/samples/src/cont

    2024年02月13日
    瀏覽(15)
  • 搭建WebRTC服務(wù)器

    1、AppRTC 房間服務(wù),代碼:github.com/webrtc/appr… 2、Collider 信令服務(wù),AppRTC源碼里自帶 3、CoTurn 打洞服務(wù),代碼:github.com/coturn/cotu… 打包資源: 鏈接: pan.baidu.com/s/1ulx1FVRN… 提取碼: 3e5f 1、操作系統(tǒng): Centos 64bits 2、Google webrtc的服務(wù)器Demo:詳見(jiàn)https://github.com/webrtc/apprtc 3、域名: ap

    2024年02月13日
    瀏覽(20)
  • 2310C++協(xié)程超傳服務(wù)器

    原文 告別 異步 回調(diào)模型,寫(xiě)代碼更簡(jiǎn)單.同樣也是跨平臺(tái), 僅頭文件 的,包含頭文件即可用,來(lái)看看它的用法. 提供 getpost 服務(wù) coro_http_server 提供了三個(gè) http 服務(wù),通過(guò) set_http_handler 注冊(cè)的,注冊(cè)了兩個(gè) http 處理函數(shù):一個(gè)是 普通 函數(shù),一個(gè)是 協(xié)程 函數(shù). 注冊(cè)為 普通函數(shù) 時(shí),會(huì)在 i

    2024年02月06日
    瀏覽(14)
  • 用于WebRTC的coturn服務(wù)器的搭建

    用于WebRTC的coturn服務(wù)器的搭建

    前言: ? ? ? ? 自己在研究WebRTC相關(guān)內(nèi)容,在遠(yuǎn)端連接老是繞不開(kāi)搭建ICE服務(wù)器,搜索了無(wú)數(shù)文章和方法,還是久久無(wú)進(jìn)展,最后頭皮嗯嘛了才成功,故想總結(jié)一下我的搭建步驟,供大家參考,避免少走彎路?。?! 1、前期準(zhǔn)備 準(zhǔn)備一個(gè)自己的公網(wǎng)服務(wù)器,可以是阿里云或其

    2024年01月24日
    瀏覽(23)
  • 互動(dòng)直播之WebRTC服務(wù)器Kurento實(shí)戰(zhàn)

    互動(dòng)直播之WebRTC服務(wù)器Kurento實(shí)戰(zhàn)

    1. Kurento Kurento的主要組件是 Kurento媒體服務(wù)器 (KMS),負(fù)責(zé)媒體傳輸,處理,記錄和播放。KMS建立在出色的GStreamer多媒體庫(kù)之上,并提供以下功能: 網(wǎng)絡(luò)流協(xié)議,包括HTTP,RTP和WebRTC。 支持媒體混合和媒體路由/調(diào)度的組通信(MCU和SFU功能)。 對(duì)實(shí)現(xiàn)計(jì)算機(jī)視覺(jué)和增強(qiáng)現(xiàn)實(shí)算

    2024年02月21日
    瀏覽(19)
  • [學(xué)習(xí)分享]----sylar服務(wù)器框架源碼閱讀--IO協(xié)程調(diào)度模塊

    sylar作者在本站的地址為 這里,也可以查看 作者主頁(yè),也有視頻教程可以 點(diǎn)擊這里。此外,也可以看一下趙路強(qiáng)大佬的關(guān)于sylar協(xié)程模塊的博客 點(diǎn)擊這里,我本人在閱讀sylar源碼的時(shí)候也是參考了趙路強(qiáng)大佬的解析 可以點(diǎn)擊這里。 各位看官也可以加我的qq和我討論2511010742

    2024年01月17日
    瀏覽(23)
  • WebRTC+Kamamilio+rtpengine+Websocket SIP服務(wù)器搭建教程

    WebRTC+Kamamilio+rtpengine+Websocket SIP服務(wù)器搭建教程

    發(fā)現(xiàn)國(guó)內(nèi)使用SIP的資料真的很少,由于公司需要使用語(yǔ)音視頻電話(huà),在網(wǎng)上找了一大圈也沒(méi)找到相關(guān)案例,最后自己折騰出一個(gè)方案,故此分享出來(lái)。 開(kāi)始之前不得不介紹一下這五個(gè)東西。 Kamamilio 是 OpenSER 的前身,是C語(yǔ)言寫(xiě)的一個(gè)Sip服務(wù),支持在 在Linux/UNIX系統(tǒng)上運(yùn)行,優(yōu)

    2024年02月15日
    瀏覽(24)
  • docker部署SRS實(shí)時(shí)視頻服務(wù)器,rtmp推流,用WebRTC播放

    docker部署SRS實(shí)時(shí)視頻服務(wù)器,rtmp推流,用WebRTC播放

    SRS是一個(gè)簡(jiǎn)單高效的實(shí)時(shí)視頻服務(wù)器,支持RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181 大家可以先去gitub上面看使用說(shuō)明,地址是:v4_CN_Home · ossrs/srs Wiki · GitHub 然后我們通過(guò)docker去啟動(dòng)SRS,這些文檔里面都有,就不用多說(shuō)了,然后我們可以用rtmp推流 用WebRTC播放,首先要支持WebRTC我們需要

    2023年04月11日
    瀏覽(32)
  • SRS服務(wù)器RTMP2WebRTC外網(wǎng)拉流配置

    將前端服務(wù)開(kāi)放到外網(wǎng),并且在外網(wǎng)使用WebRTC拉流,要求全部使用同一端口。 外網(wǎng)地址:10.172.59.42(域名:test.com)外網(wǎng)端口為33333 內(nèi)網(wǎng)SRS服務(wù)器地址:192.168.5.177,內(nèi)網(wǎng)端口為10090 路由器將外網(wǎng)33333端口映射到內(nèi)網(wǎng)192.168.5.177:10090 一、使用docker搭建SRS服務(wù)器 1、編輯~/.bashrc,添

    2024年04月11日
    瀏覽(45)
  • 重寫(xiě)Sylar基于協(xié)程的服務(wù)器(0、搭建開(kāi)發(fā)環(huán)境以及項(xiàng)目框架 || 下載編譯簡(jiǎn)化版Sylar)

    重寫(xiě)Sylar基于協(xié)程的服務(wù)器(0、搭建開(kāi)發(fā)環(huán)境以及項(xiàng)目框架 || 下載編譯簡(jiǎn)化版Sylar)

    重寫(xiě)Sylar基于協(xié)程的服務(wù)器系列: 重寫(xiě)Sylar基于協(xié)程的服務(wù)器(0、搭建開(kāi)發(fā)環(huán)境以及項(xiàng)目框架 || 下載編譯簡(jiǎn)化版Sylar) 重寫(xiě)Sylar基于協(xié)程的服務(wù)器(1、日志模塊的架構(gòu)) 重寫(xiě)Sylar基于協(xié)程的服務(wù)器(2、配置模塊的設(shè)計(jì)) 重寫(xiě)Sylar基于協(xié)程的服務(wù)器(3、協(xié)程模塊的設(shè)計(jì)) 重寫(xiě)

    2024年04月26日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包