Real-time Transpo
rt P
rotocol,IETF于1996提出的一個標準
1、Google力推,已成為W3C標準
2、現(xiàn)代瀏覽器支持趨勢,X5也支持(微信、QQ)
3、基于UDP,低延遲,弱網抗性強,比flv.js更有優(yōu)勢
4、支持Web上行能力
5、編碼為H264+OPUS
6、提供NAT穿透技術(ICE)
實際情況下,當用戶數(shù)量很大時,對推流設備的性能要求很高,復雜的權限管理也難以實現(xiàn),采用P2P的架構基本不可行。對于個別用戶提供上行流、海量用戶只進行拉流的場景,騰訊課堂實現(xiàn)了一種P2S的解決方案。 進一步學習可閱讀jaychen的系列文章《WebRTC直播技術》。
推流url:
播放url:
下面是我根據官網教程搭建的一個音視頻小程序,搭建過程簡單,同一個局域網下直播體驗也很流暢(讀者也可直接搜索 騰訊視頻云 小程序進行體驗):
前端核心代碼還是相當簡潔的:
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端拉流,那么在移動端能否讓用戶可以直接通過小程序來觀看直播課呢?我覺得在技術層面可行的,接入小程序直播對于擴大平臺影響力、社交圈分享、提高收費轉化都會產生很大的幫助。難點在于復雜的權限控制、多路音視頻流、多人連麥等問題,比如權限控制只能單獨放到房間控制邏輯中完成,而音視頻流本身缺乏這種校驗;主輔路的切換還需要添加單獨的信令控制,同時在小程序中加入相應的判斷邏輯。