0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何通過Firefox和WebRTC進(jìn)行YouTube直播

LiveVideoStack ? 來(lái)源:未知 ? 作者:李倩 ? 2018-07-27 16:49 ? 次閱讀

本文來(lái)自Meetecho的聯(lián)合創(chuàng)始人Lorenzo Miniero,他分享了如何通過Firefox和WebRTC進(jìn)行YouTube直播。Meetecho是著名的WebRTC服務(wù)器 Janus 的出品公司。LiveVideoStack對(duì)原文進(jìn)行了摘譯。

我們最近都看到了關(guān)于YouTube通過WebRTC進(jìn)行直播的新聞,但它僅僅適用于您使用谷歌瀏覽器?;鸷鼮g覽器和Edge均不適用,對(duì)于蘋果瀏覽器,說(shuō)實(shí)話,我并不太關(guān)心.....

我需要完成哪些工作,才能讓Firefox通過WebRTC發(fā)送內(nèi)容,并能觀看到它推送到Y(jié)ouTube上的直播呢?也許用一些HTML5 canvas的東西可以增加一些趣味。隨著Kamailio World Dangerous Demos賽季的開幕,這成了修補(bǔ)它的絕佳機(jī)會(huì),這正是我所做的!

我需要的是:

一種在瀏覽器中捕獲視頻,然后以某種方式編輯它,并在WebRTC的 PeerConnection中使用它的方法;

WebRTC服務(wù)器從瀏覽器接收流;

某種技術(shù)將該流進(jìn)行轉(zhuǎn)換,使得YouTube的直播更加圓滿。

第一部分是很有趣的,因?yàn)槲抑皬奈催@樣做過。或者更確切地說(shuō),在過去的幾年中,我已經(jīng)捕獲并發(fā)布過大量的WebRTC流,但我從未在瀏覽器端嘗試過捕獲視頻。我知道你可能會(huì)使用一些HTML5 canvas元素,但我從來(lái)沒有使用過它,所以我現(xiàn)在決定這樣做。還有朋友,它真的很有趣!它基本上總結(jié)為以下幾個(gè)步驟:

創(chuàng)建一個(gè)HTML5 canvas元素來(lái)進(jìn)行繪制;

通過慣用的getUserMedia來(lái)獲得媒體流;

將媒體流放入一個(gè)HTML5的video視頻元素中;

開始在canvas中繪制視頻幀,加上其他可能會(huì)很好的元素(文字疊加,圖像等);

從canvas中使用captureStream()獲取新的媒體流;

使用新的媒體流作為新的PeerConnection的源;

繼續(xù)在canvas上繪制,就像沒有盡頭一樣!

聽起來(lái)有很多步驟,但實(shí)際上它們很容易設(shè)置和完成。在短短幾分鐘內(nèi),我有了一些基本代碼來(lái)允許我捕捉到我的網(wǎng)絡(luò)攝像頭,并為其添加一些疊加:在右上角加上一個(gè)logo,底部加上一個(gè)半透明條,還有一些文字的疊加。在修改代碼上我也做了動(dòng)態(tài)地修改,以便我可以動(dòng)態(tài)地更新它們。我相信對(duì)于很多之前使用過canvas的你們來(lái)說(shuō),會(huì)嘲笑這些例子有多么的荒謬,但對(duì)于剛剛?cè)胧值奈襾?lái)說(shuō),這是一個(gè)很大的成就!

不管怎樣,最酷的部分是我在測(cè)試網(wǎng)頁(yè)中進(jìn)行了一些基本的視頻編輯工作,以及將其用作PeerConnection源的方法。下一步是將這個(gè)WebRTC流送到服務(wù)器來(lái)讓我進(jìn)行播放。不足為奇的是,我使用了Janus的目的......這個(gè)想法很簡(jiǎn)單:我需要能夠接收WebRTC流的東西,然后能夠在其它的地方使用上它??紤]到這是我?guī)啄昵伴_始研究Janus的關(guān)鍵原因之一,在幾年前它是一個(gè)完美的選擇!具體來(lái)說(shuō),我決定使用的是Janus VideoRoom插件。實(shí)際上,正如預(yù)期的那樣,我需要一種方法來(lái)將傳入的WebRTC流提供給外部組件來(lái)進(jìn)行處理,在這種情況下,將其轉(zhuǎn)換為YouTube 直播所期望的用于發(fā)布的格式。這個(gè)VideoRoom插件,與其集成了SFU功能的相比,還有一個(gè)很好的功能,稱為“RTP轉(zhuǎn)發(fā)器”,這個(gè)功能完全允許。我將在后面解釋原因以及它的工作原理

最后,我需要一些東西來(lái)將WebRTC流轉(zhuǎn)換為YouTube 直播所期望的格式。正如您可能知道的,傳統(tǒng)的方法是使用RTMP。有幾種不同的軟件可以幫助解決這個(gè)問題,但我選擇了簡(jiǎn)單的方式,使用FFmpeg來(lái)完成工作:事實(shí)上,我并不需要任何剪輯或發(fā)布功能(這些我已經(jīng)實(shí)現(xiàn)了),但只有一些東西可以轉(zhuǎn)化為正確的協(xié)議和編解碼器,這是FFmpeg非常擅長(zhǎng)的。顯然,為了實(shí)現(xiàn)這一點(diǎn),我首先需要將WebRTC流推送到FFmpeg,在這里上述的“RTP轉(zhuǎn)發(fā)器”可以提供幫助。具體來(lái)說(shuō),顧名思義,“RTP轉(zhuǎn)發(fā)器”可以簡(jiǎn)單地在某處轉(zhuǎn)發(fā)RTP數(shù)據(jù)包:在Janus VideoRoom的文章中,它們提供了一種方法,使用普通(或加密,如果需要的話)的RTP將來(lái)自WebRTC發(fā)布者的媒體數(shù)據(jù)包轉(zhuǎn)發(fā)到一個(gè)或多個(gè)遠(yuǎn)程地址。由于FFmpeg支持普通RTP作為輸入格式(使用一個(gè)SDP類型來(lái)綁定在正確的端口上并指定正在使用的音頻/視頻編解碼器),這是使用WebRTC媒體流提供它的最佳方式!

在這一點(diǎn)上,我得到了我所需要的一切:

瀏覽器作為編輯/發(fā)布軟件(canvas + WebRTC);

Janus作為媒介(WebRTC-to-RTP);

FFmpeg作為轉(zhuǎn)碼器(RTP-to-RTMP)。

也就是說(shuō),最后一步是測(cè)試所有的這些。在本地測(cè)試中,這一切都預(yù)期的工作,在測(cè)試中使用優(yōu)秀的老版red5作為開源RTMP服務(wù)器,但很顯然,真正的挑戰(zhàn)是讓它與YouTube的 直播一起工作。所以我進(jìn)入到Meetecho 的YouTube帳戶的控制面板來(lái)驗(yàn)證它,等待要通常的24小時(shí)才獲得發(fā)布流的必要信息。這些基本上包括要連接的RTMP服務(wù)器,以及用于標(biāo)識(shí)流的唯一(和秘密)密鑰。

通過四處搜索,我找到了一些不錯(cuò)的代碼片段,展示了如何使用FFmpeg流式傳輸?shù)結(jié)ouTube Live,我修改了腳本以使用我的源和目標(biāo)信息,以便在那上面發(fā)布而不是在我的本地RTMP服務(wù)器上。令人欣喜的是,我讓它開始工作了,但它并不總是完美的工作,在某些地方總有一些問題,但是對(duì)于一個(gè)demo來(lái)說(shuō),它已經(jīng)運(yùn)行的很好了。

就是這樣,真的,不需要其他“魔法”。這就可以很容易變成各種各樣的服務(wù),可以通過做一些好的canvas上的工作(我做的是非?;A(chǔ)的)來(lái)改進(jìn)編輯部分,并使“RTP Forwarding + FFmpeg + YouTube Live授權(quán)證書”部分變得動(dòng)態(tài)化(例如,在端口和帳戶的使用方面),以支持多個(gè)流媒體和多個(gè)事件,但是這些細(xì)節(jié)都在那里。

是的,我知道你在想什么:我的意思是,我正在使用WebRTC進(jìn)行推流,并且它最終會(huì)進(jìn)入YouTube 直播中,但這不是一個(gè)直接的步驟。我所做的基本上是利用Janus的靈活性來(lái)處理WebRTC流,通過使用FFmpeg以YouTube的“Ye Olde”方式進(jìn)行實(shí)際廣播。無(wú)論如何,它仍然很酷!在客戶端使用HTML5 canvas使得以某種方式“編輯”推流部分變得容易了,給了我相當(dāng)多的創(chuàng)作自由。此外,使用WebRTC仍然給人一種很好的感覺!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Firefox
    +關(guān)注

    關(guān)注

    0

    文章

    96

    瀏覽量

    13623
  • 視頻編輯
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    8559

原文標(biāo)題:用WebRTC在Firefox上實(shí)現(xiàn)YouTube直播

文章出處:【微信號(hào):livevideostack,微信公眾號(hào):LiveVideoStack】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Youtube推出VR180視頻格式 打造沉浸立體視頻

    。   另外,VR180還支持直播,內(nèi)容創(chuàng)作者與粉絲們屆時(shí)也將緊密連接在一起進(jìn)行互動(dòng),而合資格的創(chuàng)作者還可通過全世界的YouTube Spaces申請(qǐng)租借支持VR180的相機(jī)。相關(guān)詳
    發(fā)表于 06-27 09:30

    WEBRTC有哪幾種類型

    直接進(jìn)行媒體數(shù)據(jù)交換的;如果不能實(shí)現(xiàn) NAT 穿越,那么只能通過 TURN 服務(wù)器進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)的方式實(shí)現(xiàn)通信。目前來(lái)看,Google 開源的用于學(xué)習(xí)和研究的項(xiàng)目基本都是基于 STUN/TURN 的 ...
    發(fā)表于 11-01 06:34

    WebRTC技術(shù)的應(yīng)用

    我們這里常說(shuō)的RTC可以理解為WebRTC技術(shù),因?yàn)?b class='flag-5'>WebRTC技術(shù)是目前使用最廣泛的即時(shí)通信技術(shù),雖然在早期我們提到WebRTC、提到視頻通話就會(huì)想到P2P的方式,但實(shí)際的視頻通話方式背后的邏輯有
    發(fā)表于 11-01 07:42

    WebRTC有哪些功能

    WebRTC 本身提供的是 1 對(duì) 1 的通信模型,在 STUN/TURN 的輔助下,如果能實(shí)現(xiàn) NAT 穿越,那么兩個(gè)瀏覽器是可以直接進(jìn)行媒體數(shù)據(jù)交換的;如果不能實(shí)現(xiàn) NAT 穿越,那么只能通過
    發(fā)表于 11-03 08:16

    怎樣通過WebRTC實(shí)現(xiàn)多對(duì)多通信呢

    WebRTC 本身提供的是 1 對(duì) 1 的通信模型,在 STUN/TURN 的輔助下,如果能實(shí)現(xiàn) NAT 穿越,那么兩個(gè)瀏覽器是可以直接進(jìn)行媒體數(shù)據(jù)交換的;如果不能實(shí)現(xiàn) NAT 穿越,那么只能通過
    發(fā)表于 11-03 07:17

    什么是WebRTC

    什么是WebRTCWebRTC,即Web Real-Time Communication(網(wǎng)頁(yè)即時(shí)通信)。它是一個(gè)開源項(xiàng)目,旨在創(chuàng)建簡(jiǎn)單、標(biāo)準(zhǔn)化的流程通過Web提供實(shí)時(shí)通信(RTC)。Web
    發(fā)表于 12-09 07:59

    如何對(duì)嵌入YouTube視頻進(jìn)行延遲加載呢

    的過程。 復(fù)制,粘貼,完成。 但是,引入諸如YouTube視頻之類的外部資源可能會(huì)降低網(wǎng)頁(yè)的加載性能,尤其是如果同一頁(yè)面上嵌入了兩個(gè)或更多視頻時(shí)。通過嵌入視頻,我們不僅需要視頻文件,還可以請(qǐng)求...
    發(fā)表于 12-23 08:07

    如何使用WebRTC?

    SRS 4.0與WebRTC音視頻通話1.音視頻高薪崗位都需要什么技能點(diǎn)2.WebRTC的技術(shù)點(diǎn)分析3.SRS4.0如何使用WebRTC視頻講解如下,點(diǎn)擊觀看:流媒體服務(wù)器開發(fā)——SRS 4.0
    發(fā)表于 12-24 06:40

    WEBRTC有哪幾種類型

    直接進(jìn)行媒體數(shù)據(jù)交換的;如果不能實(shí)現(xiàn) NAT 穿越,那么只能通過 TURN 服務(wù)器進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)的方式實(shí)現(xiàn)通信。目前來(lái)看,Google 開源的用于學(xué)習(xí)和研究的項(xiàng)目基本都是基于 STUN/TURN 的 1
    發(fā)表于 02-14 06:36

    谷歌旗下的YouTube放大招 將支持4K 360度視頻直播

    VR日?qǐng)?bào)訊 在去年三月份,YouTube就開始支持360度全景視頻。今年的二月份,Youtube就宣布正式推出360度沉浸式視頻直播功能,并稱將令沉浸式視頻更上一層樓。 這也是Youtube
    發(fā)表于 12-01 11:33 ?944次閱讀

    WebRTC技術(shù)服務(wù)商:預(yù)測(cè)2018年WebRTC的5大趨勢(shì)

    也許對(duì)于大部分WebRTC的開發(fā)者而言,2018年將是忙碌的一年。主流瀏覽器和蘋果官方支持,標(biāo)準(zhǔn)和API定型,WebRTC生態(tài)具備了快速發(fā)展的條件。WebRTC技術(shù)服務(wù)商“WebRTC
    的頭像 發(fā)表于 01-16 12:51 ?5860次閱讀

    YouTube 解鎖更高畫質(zhì),直播現(xiàn)已支持 HDR

    12 月 9 日消息 根據(jù) YouTube 官方的消息,其流媒體直播現(xiàn)已支持 HDR。YouTube 表示,HDR 視頻有更高的對(duì)比度,陰影和高光的信息更多。通過將 HDR 引入流媒體
    的頭像 發(fā)表于 12-09 18:16 ?3777次閱讀

    WebRTC速成課程

    WebRTC 設(shè)計(jì)的目標(biāo)就是“設(shè)計(jì)一種通過盡量短的、延遲盡量低的路徑進(jìn)行 P2P 通信的協(xié)議,提供一種簡(jiǎn)單的、能讓所有人使用的 API”。
    的頭像 發(fā)表于 03-24 10:34 ?1208次閱讀

    使用手勢(shì)通過Arduino控制YouTube播放

    電子發(fā)燒友網(wǎng)站提供《使用手勢(shì)通過Arduino控制YouTube播放.zip》資料免費(fèi)下載
    發(fā)表于 12-21 16:55 ?3次下載
    使用手勢(shì)<b class='flag-5'>通過</b>Arduino控制<b class='flag-5'>YouTube</b>播放

    WebRTC進(jìn)行壓測(cè)的思路及方式和一些經(jīng)驗(yàn)

    最近幾年WebRTC特別火,但如何對(duì)WebRTC服務(wù)進(jìn)行壓力測(cè)試是一個(gè)很有難度和挑戰(zhàn)的工作,因?yàn)?b class='flag-5'>WebRTC客戶端實(shí)際使用上產(chǎn)生的壓力瓶頸主要來(lái)源對(duì)象是碼流而非傳統(tǒng)的HTTP并發(fā)請(qǐng)求。
    的頭像 發(fā)表于 10-30 11:30 ?1036次閱讀
    <b class='flag-5'>WebRTC</b><b class='flag-5'>進(jìn)行</b>壓測(cè)的思路及方式和一些經(jīng)驗(yàn)