前端使用WebRTC———HelloWorld

什么是webrtc疗认?

借助 WebRTC,您可以將實(shí)時(shí)通信功能添加到基于開放標(biāo)準(zhǔn)運(yùn)行的應(yīng)用程序只搁。它支持在對(duì)等點(diǎn)之間發(fā)送視頻赤兴、語音和通用數(shù)據(jù)妖滔,允許開發(fā)人員構(gòu)建強(qiáng)大的語音和視頻通信解決方案.

重點(diǎn): 點(diǎn)對(duì)點(diǎn)發(fā)送視頻、語音和數(shù)據(jù)桶良。

如何在瀏覽器中使用webrtc座舍?

瀏覽器中可以通過一下方法判斷當(dāng)前瀏覽器是否支持webrtc

   window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection

簡(jiǎn)單的Demo

先從最簡(jiǎn)單的例子開始,我們?cè)谝粋€(gè)網(wǎng)頁中陨帆,通過兩個(gè)RTCPeerConnection對(duì)象來建立一個(gè)連接曲秉,一個(gè)RTCPeerConnection(pc_pub)對(duì)象發(fā)送視頻和語音,另一個(gè)RTCPeerConnection(pc_sub)對(duì)象接收視頻和語音疲牵。

效果

image.png

此處使用了Safri的虛擬攝像頭承二。可以避免使用真實(shí)攝像頭還要露臉的尷尬纲爸『ヰ可以看到左側(cè)是本地采集的畫面,右側(cè)是接收到的視頻畫面缩焦。中間有大概幾十毫秒的延遲读虏。

流程

image.png

在上面的流程圖中,pub_pc表示推流的對(duì)象(PeerConnection)袁滥, sub_pc表示訂閱的對(duì)象(PeerConnection)盖桥。

  • 通過getUserMedia方法來請(qǐng)求使用本地設(shè)備

  • 左側(cè)的VideoElement只是用來顯示推流內(nèi)容(本地預(yù)覽),是否顯示都不影響推流效果题翻。

總結(jié)

先嘗試跑通這個(gè)簡(jiǎn)單的Demo揩徊,可以看從頁面中看到本地預(yù)覽、推拉流的效果嵌赠。如果你是第一次接觸webrtc塑荒,上面的流程中有很多看不懂的名字和方法可以先忽略它們。

代碼

<html>

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>webrtc連接</title>
</head>

<body>
  <video id="localStream" style="width: 320px; height: 240px;" autoplay muted></video>
  <video id="remoteStream" style="width: 320px; height: 240px;" autoplay muted> </video>
  <button id="deviceBtn">打開本地?cái)z像頭</button>
  <button id="startBtn">建立連接</button>
  <script>
    let localStream = null;
    let localVideo = document.getElementById("localStream");
    let remoteVideo = document.getElementById("remoteStream")
    let deviceBtn = document.getElementById("deviceBtn");
    let startBtn = document.getElementById("startBtn");

    let pc_pub = new RTCPeerConnection();
    let pc_sub = new RTCPeerConnection();

    deviceBtn.addEventListener("click", () => {
      navigator.mediaDevices.getUserMedia({ video: true }).then((mediastream) => {
        localStream = mediastream;
        localVideo.srcObject = mediastream;
      })
    })

    startBtn.addEventListener("click", () => {
      pc_pub.addTrack(localStream.getVideoTracks()[0], localStream);
      pc_pub.createOffer().then((offer) => {
        pc_pub.setLocalDescription(offer).then(() => {
          pc_sub.setRemoteDescription(offer).then(() => {
            pc_sub.createAnswer().then((answer) => {
              pc_sub.setLocalDescription(answer).then(() => {
                pc_pub.setRemoteDescription(answer).then(() => {

                })
              })
            })
          })
        })
      })
    })

    pc_pub.addEventListener('icecandidate', (event) => {
      if (event.candidate) {
        pc_sub.addIceCandidate(event.candidate);
      }
    })

    pc_sub.addEventListener('icecandidate', (event) => {
      if (event.candidate) {
        pc_pub.addIceCandidate(event.candidate);
      }
    })

    pc_sub.addEventListener('track', (event) => {
      remoteVideo.srcObject = event.streams[0];
    })
  </script>
</body>

其他

如果你也是專注前端多媒體或者對(duì)前端多媒體感興趣姜挺,可以搜索微信公眾號(hào)"前端多媒體"

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末齿税,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子炊豪,更是在濱河造成了極大的恐慌凌箕,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件词渤,死亡現(xiàn)場(chǎng)離奇詭異牵舱,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)缺虐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門芜壁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事慧妄∏昱疲” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵塞淹,是天一觀的道長韧掩。 經(jīng)常有香客問我,道長窖铡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任坊谁,我火速辦了婚禮费彼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘口芍。我一直安慰自己箍铲,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開白布鬓椭。 她就那樣靜靜地躺著颠猴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪小染。 梳的紋絲不亂的頭發(fā)上翘瓮,一...
    開封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天础浮,我揣著相機(jī)與錄音蔬胯,去河邊找鬼。 笑死愿伴,一個(gè)胖子當(dāng)著我的面吹牛踊赠,可吹牛的內(nèi)容都是我干的呵扛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼筐带,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼今穿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起伦籍,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤蓝晒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后鸽斟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拔创,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年富蓄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了剩燥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖灭红,靈堂內(nèi)的尸體忽然破棺而出侣滩,到底是詐尸還是另有隱情,我是刑警寧澤变擒,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布君珠,位于F島的核電站,受9級(jí)特大地震影響娇斑,放射性物質(zhì)發(fā)生泄漏策添。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一毫缆、第九天 我趴在偏房一處隱蔽的房頂上張望唯竹。 院中可真熱鬧,春花似錦苦丁、人聲如沸浸颓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽产上。三九已至,卻和暖如春蛾狗,著一層夾襖步出監(jiān)牢的瞬間晋涣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來泰國打工沉桌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留姻僧,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓蒲牧,卻偏偏與公主長得像撇贺,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子冰抢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容