Real-time Transpo
rt P
rotocol,IETF于1996提出的一個標準


1、Google力推,已成為W3C標準
2、現(xiàn)代瀏覽器支持趨勢,X5也支持(微信、QQ)

3、基于UDP,低延遲,弱網(wǎng)抗性強,比flv.js更有優(yōu)勢

4、支持Web上行能力
5、編碼為H264+OPUS
6、提供NAT穿透技術(ICE)
實際情況下,當用戶數(shù)量很大時,對推流設備的性能要求很高,復雜的權限管理也難以實現(xiàn),采用P2P的架構基本不可行。對于個別用戶提供上行流、海量用戶只進行拉流的場景,騰訊課堂實現(xiàn)了一種P2S的解決方案。 進一步學習可閱讀jaychen的系列文章《WebRTC直播技術》。

推流url:

播放url:

下面是我根據(jù)官網(wǎng)教程搭建的一個音視頻小程序,搭建過程簡單,同一個局域網(wǎng)下直播體驗也很流暢(讀者也可直接搜索 騰訊視頻云 小程序進行體驗):

前端核心代碼還是相當簡潔的:
live-pusher組件:設置好url推流地址(僅支持 flv, rtmp 格式)等參數(shù)即可,使用bindstatechange獲取播放狀態(tài)變化
復制代碼
<view id='video-box'>
<live-pusher
id="pusher"
mode="RTC"
url="{{pusher.push_url}}"
autopush='true'
bindstatechange="onPush">
</live-pusher>
</view>
|
live-player組件:設置后src音視頻地址(僅支持 flv, rtmp 格式)等參數(shù)即可,使用bindstatechange獲取播放狀態(tài)變化
<view id='video-box'>
<live-player
wx:for="{{player}}"
id="player_{{index}}"
mode="RTC"
object-fit="fillCrop"
src="{{item.playUrl}}"
autoplay='true'
bindstatechange="onPlay">
</live-player>
</view>
|
能否和WebRTC同時使用?
對于騰訊課堂的應用場景,老師上課推流采用的是RTMP協(xié)議,考慮到WebRTC目前只能用于PC端拉流,那么在移動端能否讓用戶可以直接通過小程序來觀看直播課呢?我覺得在技術層面可行的,接入小程序直播對于擴大平臺影響力、社交圈分享、提高收費轉化都會產生很大的幫助。難點在于復雜的權限控制、多路音視頻流、多人連麥等問題,比如權限控制只能單獨放到房間控制邏輯中完成,而音視頻流本身缺乏這種校驗;主輔路的切換還需要添加單獨的信令控制,同時在小程序中加入相應的判斷邏輯。