這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 使用須知 2017年下半年,微信6.5.21版本支持線上音視頻功能。開發者可以通過兩個音視頻組件 和 實現實時地線上直播、視頻通話、語音通話等功能。 上述功能需要用到兩個小程式媒體組件中的兩個: live-pusher 與 live-pl ...
這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助
使用須知
2017年下半年,微信6.5.21版本支持線上音視頻功能。開發者可以通過兩個音視頻組件 和 實現實時地線上直播、視頻通話、語音通話等功能。
上述功能需要用到兩個小程式媒體組件中的兩個: live-pusher
與 live-player
。下文簡單介紹兩這個組件的基礎知識。僅可以帶你入門,如果是高手請繞行。
註冊小程式
註冊小程式請單擊 微信公眾平臺 ,完成註冊後,在小程式管理頁面的【開發】>【基本配置】中記錄下小程式 AppID 供後面使用。
註意: 必須以非個人主體類型進行註冊,否則無法開通 和 這兩個標簽。
開通標簽使用許可權
live-pusher 和 live-player 是小程式內部用於支持音視頻上行能力的功能標簽
出於政策和合規的考慮,微信暫時沒有放開所有小程式對 live-pusher 和 live-player 標簽的支持:
- 目前支持這兩個標簽的類目如下表格所示(只有非個人主體才有以下類目):
主類目 | 子類目 | 小程式內容場景 |
---|---|---|
社交 | 直播 | 涉及娛樂性質,如明星直播、生活趣事直播、寵物直播等。選擇該類目後首次提交代碼審核,需經當地互聯網主管機關審核確認,預計審核時長7天左右 |
教育 | 線上視頻課程 | 網課、線上培訓、講座等教育類直播 |
醫療 | 互聯網醫院,公立醫院 | 問診、大型健康講座等直播 |
金融 | 銀行、信托、基金、證券/期貨、證券、期貨投資咨詢、保險、徵信業務、新三板信息服務平臺、股票信息服務平臺(港股/美股)、消費金融 | 金融產品視頻客服理賠、金融產品推廣直播等 |
汽車 | 汽車預售服務 | 汽車預售、推廣直播 |
政府主體帳號 | - | 政府相關工作推廣直播、領導講話直播等 |
工具 | 視頻客服 | 不涉及以上幾類內容的一對一視頻客服服務,如企業售後一對一視頻服務等 |
- 符合類目要求的小程式,需要在小程式管理後臺的【開發】>【介面設置】中自助開通推拉流標簽的使用許可權
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Vni239TU-1586502758626)(/Users/mxj/百度雲同步盤/學習筆記/前端全棧/微信小程式/img/image-20200409073506475.png)]
說明:如果以上設置都正確,但小程式依然不能正常工作,可能是微信內部的緩存沒更新,請刪除小程式並重啟微信後,再進行嘗試。
live-player
live-player是小程式內部用於支持音視頻下行(播放)能力的功能標簽。
版本支持
- 微信 App iOS 最低版本要求:6.5.21 。
- 微信 App Android 最低版本要求:6.5.19。
- 小程式基礎庫最低版本要求:1.7.0。
可以通過 wx.getSystemInfo 可以獲取當前基礎庫版本信息。
屬性定義
屬性名 | 類型 | 預設值 | 說明 |
---|---|---|---|
src | String | - | 用於音視頻下行的播放 URL,支持 RTMP、FLV 等協議 |
mode | String | live | 模式。live(直播),RTC(實時通話,該模式時延更低) |
autoplay | Boolean | false | 是否自動播放 |
muted | Boolean | false | 是否靜音 |
orientation | String | vertical | vertical(垂直),horizontal(水平) |
object-fit | String | contain | 填充模式,可選值有 contain(圖像長邊填滿屏幕,短邊區域會被填充⿊⾊) ,fillCrop(圖像鋪滿屏幕,超出顯示區域的部分將被截掉) |
background-mute | Boolean | false | 當微信切到後臺時,是否關閉播放聲音 |
min-cache | Number | 1 | 最小緩衝延遲, 單位:秒 |
max-cache | Number | 3 | 最大緩衝延遲, 單位:秒 |
sound-mode | String | speaker | 聲音輸出方式。speaker(揚聲器),ear(聽筒) |
auto-pause-if-navigate | Boolean | true | 當跳轉到本小程式的其他頁面時,是否自動暫停本頁面的實時音視頻播放 |
auto-pause-if-open-native | Boolean | true | 當跳轉到其它微信原生頁面時,是否自動暫停本頁面的實時音視頻播放 |
picture-in-picture-mode | string/Array | - | 設置小窗模式: push, pop 或通過數組形式設置多種模式(如: ["push", "pop"])(不常用) |
bindstatechange | EventHandler | - | 用於指定一個 javascript 函數來接受播放器事件.detail = {code} |
bindfullscreenchange | EventHandler | - | 用於指定一個 javascript 函數來接受全屏變化事件,detail = {direction, fullScreen} |
bindnetstatus | EventHandler | - | 網路狀態通知,detail = {info} |
bindaudiovolumenotify | EventHandler | - | 播放音量大小通知,detail = {}(不常用) |
debug | Boolean | false | 是否開啟調試模式 |
示例代碼
<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>
超低時延
的 RTC 模式支持500ms以內的超低時延鏈路,可以應用在視頻通話和遠程遙控等場景中,要使用超低時延播放,需要註意如下幾點: (1)推流端如果是微信小程式,請使用 的 RTC 模式。 (2)推流端如果是 iOS 或者 Android SDK,請使用 setVideoQuality 的 MAIN_PUBLISHER 模式。 (3)推流端如果是 Windows,請不要使用 OBS,延時太高,可以使用我們的 Windows SDK。 (4) 的 min-cache 和 max-cache 請不要自行設置,使用預設值。 (5)播放地址請使用超低延時播放地址,也就是帶了防盜鏈簽名的rtmp://
地址,如下:
對比項目 | 示例 | 時延 |
---|---|---|
普通直播 URL | rtmp://3891.liveplay.myqcloud.com/live/3891_test_clock_for_rtmpacc | >2s |
超低延時 URL | rtmp://3891.liveplay.myqcloud.com/live/3891_test_clock_for_rtmpacc?bizid=bizid&txTime=5FD4431C&txSerect=20e6d865f462dff61ada209d53c71cf9 | < 500ms |
屬性詳解
src 用於音視頻下行的播放 URL,支持 RTMP 協議(URL 以rtmp://
打頭)和 FLV 協議(URL 以http://
打頭且以.flv
結尾)
說明:
標簽是不支持 HLS(m3u8)協議的,因為 已經支持 HLS(m3u8)播放協議了。但直播觀看不推薦使用 HLS(m3u8)協議,延遲要比 RTMP 和 FLV 協議高一個數量級。
mode live 模式主要用於直播類場景,例如賽事直播、線上教育、遠程培訓等等。該模式下,小程式內部的模塊會優先保證觀看體驗的流暢,通過調整 min-cache 和 max-cache 屬性,您可以調節觀眾(播放)端所感受到的時間延遲的大小,文檔下麵會詳細介紹這兩個參數。
RTC 則主要用於雙向視頻通話或多人視頻通話場景,例如金融開會、線上客服、車險定損、培訓會議等等。在此模式下,對 min-cache 和 max-cache 的設置不會起作用,因為小程式內部會自動將延遲控制在一個很低的水平(500ms左右)。
min-cache 和 max-cache
這兩個參數分別用於指定觀看端的最小緩衝時間和最大緩衝時間。所謂緩衝時間,是指播放器為了緩解網路波動對觀看流暢度的影響而引入的一個“蓄水池”,當來自網路的數據包出現卡頓甚至停滯的時候,“蓄水池”里的緊急用水可以讓播放器還能堅持一小段時間,只要在這個短暫的時間內網速恢復正常,播放器就可以源源不斷地渲染出流暢而平滑的視頻畫面。
“蓄水池”里的水越多,抗網路波動的能力就越強,但代價就是觀眾端的延遲就越大,所以要在不同的場景下,使用不同的配置來達到體驗上的平衡:
- 碼率比較低(1Mbps左右,畫面以人物為主)的直播流,min-cache = 1,max-cache = 3 較合適。
- 碼率比較高(2Mbps - 3Mbps的高清游戲畫面為主)的直播流,min-cache = 3,max-cache = 5 較合適。
RTC 模式下這兩個參數是無效的。
background-mute 微信切到後臺以後是否繼續播放聲音,用於避免鎖屏對於當前小程式正在播放的視頻內容的影響。
debug 調試音視頻相關功能,如果沒有很好的工具會是一個噩夢,所以小程式為 live-pusher 標簽支持了 debug 模式,開始 debug 模式之後,原本用於渲染視頻畫面的視窗上,會顯示一個半透明的 log 視窗,用於展示各項音視頻指標和事件,降低您調試相關功能的難度,具體使用方法我們在 FAQ 中有詳細說明。
對象操作
wx.createLivePlayerContext() 通過 wx.createLivePlayerContext() 可以將 標簽和 javascript 對象關聯起來,之後即可操作該對象。
play 開始播放,如果 的 autoplay 屬性設置為 false(預設值),那麼就可以使用 play 來手動啟動播放。
stop 停止播放。
pause 暫停播放,停留在最後畫面。
resume 繼續播放,與 pause 成對使用。
mute 設置靜音。
requestFullScreen 進入全屏幕。
exitFullScreen 退出全屏幕。
代碼實例
var player = wx.createLivePlayerContext('pusher'); player.requestFullScreen({ success: function(){ console.log('enter full screen mode success!') } fail: function(){ console.log('enter full screen mode failed!') } complete: function(){ console.log('enter full screen mode complete!') } });
內部事件
通過live-player
標簽的 bindstatechange 屬性可以綁定一個事件處理函數,該函數可以監聽推流模塊的內部事件和異常通知。
關鍵事件
code | 事件定義 | 含義說明 |
---|---|---|
2001 | PLAY_EVT_CONNECT_SUCC | 已經連接到雲端伺服器 |
2002 | PLAY_EVT_RTMP_STREAM_BEGIN | 伺服器開始傳輸音視頻數據 |
2003 | PLAY_EVT_RCV_FIRST_I_FRAME | 網路接收到首段音視頻數據 |
2004 | PLAY_EVT_PLAY_BEGIN | 視頻播放開始,可以在收到此事件之前先用預設圖片代表等待狀態 |
2006 | PLAY_EVT_PLAY_END | 視頻播放結束 |
2007 | PLAY_EVT_PLAY_LOADING | 進入緩衝中狀態,此時播放器在等待或積攢來自伺服器的數據 |
-2301 | PLAY_ERR_NET_DISCONNECT | 網路連接斷開,且重新連接亦不能恢復,播放器已停止播放 |
說明:
播放 HTTP:// 打頭的 FLV 協議地址時,如果觀眾遇到播放中直播流斷開的情況,小程式是不會拋出 PLAY_EVT_PLAY_END 事件的,這是因為 FLV 協議中沒有定義停止事件,所以只能通過監聽 PLAY_ERR_NET_DISCONNECT 來替代之。
警告事件
內部警告並非不可恢復的錯誤,小程式內部的音視頻 SDK 會啟動相應的恢復措施,警告的目的主要用於提示開發者或者最終用戶,例如:
code | 事件定義 | 含義說明 |
---|---|---|
2101 | PLAY_WARNING_VIDEO_DECODE_FAIL | 當前視頻幀解碼失敗 |
2102 | PLAY_WARNING_AUDIO_DECODE_FAIL | 當前音頻幀解碼失敗 |
2103 | PLAY_WARNING_RECONNECT | 網路斷連,已啟動自動重連恢復(重連超過三次就直接拋送 PLAY_ERR_NET_DISCONNECT 了) |
2104 | PLAY_WARNING_RECV_DATA_LAG | 視頻流不太穩定,可能是觀看者當前網速不充裕 |
2105 | PLAY_WARNING_VIDEO_PLAY_LAG | 當前視頻播放出現卡頓 |
2106 | PLAY_WARNING_HW_ACCELERATION_FAIL | 硬解啟動失敗,採用軟解 |
2107 | PLAY_WARNING_VIDEO_DISCONTINUITY | 當前視頻幀不連續,視頻源可能有丟幀,可能會導致畫面花屏 |
3001 | PLAY_WARNING_DNS_FAIL | DNS解析失敗(僅播放 RTMP:// 地址時會拋送) |
3002 | PLAY_WARNING_SEVER_CONN_FAIL | 伺服器連接失敗(僅播放 RTMP:// 地址時會拋送) |
3003 | PLAY_WARNING_SHAKE_FAIL | 伺服器握手失敗(僅播放 RTMP:// 地址時會拋送) |
代碼實例
Page({ onPlay: function(ret) { if(ret.detail.code == 2004) { console.log('視頻播放開始',ret); } }, /** * 生命周期函數--監聽頁面載入 */ onLoad: function (options) { //... } })
網路狀態數據
鍵名 | 說明 |
---|---|
videoBitrate | 當前視頻編/碼器輸出的比特率,單位 kbps |
audioBitrate | 當前音頻編/碼器輸出的比特率,單位 kbps |
videoFPS | 當前視頻幀率 |
videoGOP | 當前視頻 GOP,也就是每兩個關鍵幀(I幀)間隔時長,單位 s |
netSpeed | 當前的發送/接收速度 |
netJitter | 網路抖動情況,為 0 時表示沒有任何抖動,值越大表明網路抖動越大,網路越不穩定 |
videoWidth | 視頻畫面的寬度 |
videoHeight | 視頻畫面的高度 |
小窗特性說明
live-player 小窗支持以下三種觸發模式(在組件上設置 picture-in-picture-mode 屬性):
- push 模式,即從當前頁跳轉至下一頁時出現小窗(頁面棧push)
- pop 模式,即離開當頁面時觸發(頁面棧pop)
- 以上兩種路由行為均觸發小窗
此外,小窗還支持以下特性:
- 小窗容器尺寸會根據原組件尺寸自動判斷
- 點擊小窗,用戶會被導航回小窗對應的播放器頁面
- 小窗出現後,用戶可點擊小窗右上角的關閉按鈕或調用 context.exitPictureInPicture() 介面關閉小窗
特別說明
-
組件是由客戶端創建的原生組件,它的層級是最高的,不能通過
z-index
控制層級。可以使用 和 覆蓋在上面。 -
請勿在 ,,, 中使用 組件。
-
live-player 預設寬度300px、高度225px,可通過wxss設置寬高。
-
開發者工具上暫不支持。
-
css 動畫對 live-pusher 組件無效。
常見問題
開發和運行環境要求
- 微信 App iOS 最低版本要求:6.5.21。
- 微信 App Android 最低版本要求:6.5.19。
- 小程式基礎庫最低版本要求:1.7.0。
- 由於微信開發者工具不支持原生組件(即 和 標簽),需要在真機上進行運行體驗。
調試時為什麼要開啟調試模式?
開啟調試可以跳過把這些功能變數名稱加入小程式白名單的工作,否則可能會遇到登錄失敗,通話無法連接的問題。
live-pusher
屬性定義
屬性名 | 類型 | 預設值 | 說明 |
---|---|---|---|
url | String | - | 用於音視頻上行的推流 URL |
mode | String | RTC | SD,HD,FHD,RTC |
autopush | Boolean | false | 是否自動啟動推流 |
muted | Boolean | false | 是否靜音 |
enable-camera | Boolean | true | 開啟\關閉攝像頭 |
auto-focus | Boolean | true | 手動\自動對焦 |
orientation | String | vertical | vertical,horizontal |
beauty | Number | 0 | 美顏指數,取值 0 - 9,數值越大效果越明顯 |
whiteness | Number | 0 | 美白指數,取值 0 - 9,數值越大效果越明顯 |
aspect | String | 9:16 | 3:4,9:16 |
zoom | Boolean | false | 是否正常焦距,true 表示將攝像頭放大 |
device-position | String | front | front 前置攝像頭,back 後置攝像頭 |
min-bitrate | Number | 200 | 最小碼率,該數值決定了畫面最差的清晰度表現 |
max-bitrate | Number | 1000 | 最大碼率,該數值決定了畫面最好的清晰度表現 |
audio-quality | String | low | low 適合語音通話,high 代表高音質 |
waiting-image | String | - | 當微信切到後臺時的墊片圖片 |
waiting-image-hash | String | - | 當微信切到後臺時的墊片圖片的校驗值 |
background-mute | Boolean | false | 當微信切到後臺時是否禁用聲音採集 |
bindstatechange | String | - | 用於指定一個 javascript 函數來接收音視頻事件 |
debug | Boolean | false | 是否開啟調試模式 |
示例代碼
<view id='video-box'> <live-pusher id="pusher" mode="RTC" url="{{pusher.push_url}}" autopush='true' bindstatechange="onPush"> </live-pusher> </view>
屬性詳解
-
url 用於音視頻上行的推流 URL,以
rtmp://
協議首碼打頭,騰訊雲推流 URL 的獲取方法見 快速獲取 URL 文檔。說明:
小程式內部使用的 RTMP 協議是支持 UDP 加速的版本,在同樣網路條件下,UDP 版本的 RTMP 會比開源版本的有更好的上行速度和抗抖動能力。
-
mode SD、HD 和 FHD 主要用於直播類場景,例如賽事直播、線上教育、遠程培訓等等。SD、HD 和 FHD 分別對應三種預設的清晰度。該模式下,小程式會更加註重清晰度和觀看的流暢性,不會過分強調低延遲,也不會為了延遲犧牲畫質和流暢性。
RTC 則主要用於雙向視頻通話或多人視頻通話場景,例如金融開會、線上客服、車險定損、培訓會議等。該模式下,小程式會更加註重降低點到點的時延,也會優先保證聲音的質量,在必要的時候會對畫面清晰度和畫面的流暢性進行一定的縮水。
-
orientation 和 aspect 橫屏(horizontal)模式還是豎屏(vertical)模式,預設是豎屏模式,即 home 鍵朝下。這時,小程式推出的畫面的寬高比是3:4或者9:16這兩種豎屏寬高比的畫面,也就是寬 < 高。如果改成橫屏模式,小程式推出的畫面寬高比即變為4:3或者16:9這種橫屏寬高比的畫面,也就是寬 > 高。
具體的寬高比是有 aspect 決定的 ,預設是9:16, 也可以支持3:4。 這是在 orientation 的屬性值為 vertical 的情況下。如果 orientation 的屬性值為 horizontal,那麼3:4的效果等價於4:3,9:16的效果等價於16:9。
-
min-bitrate 和 max-bitrate 這裡首先要科普一個概念 —— 視頻碼率,指視頻編碼器每秒鐘輸出的視頻數據的多少。在視頻解析度確定的情況下,視頻碼率越高,即每秒鐘輸出的數據越多,相應的畫質也就越好。
所以 min-bitrate 和 max-bitrate 這兩個屬性,分別用於決定輸出畫面的最低清晰度和最高清晰度。這兩個數值並非越大越好,因為用戶的網路上行不是無限好的。但也不是越小越好,因為實際應用場景中,清晰與否是用戶衡量產品體驗的一個重要指標。具體的數值設定我們會在**“參數設置”**部分詳細介紹。
小程式內部會自動處理好解析度和碼率的關係,例如2Mbps的碼率,小程式會選擇720p的解析度進行匹配,而300kbps的碼率下,小程式則會選擇較低的解析度來提高編碼效率。所以您只需要關註 min-bitrate 和 max-bitrate 這一對參數就可以掌控畫質了。
-
waiting-image 和 waiting-image-hash 出於用戶隱私的考慮,在微信切到後臺以後,小程式希望停止攝像頭的畫面採集。但是對於另一端的用戶而言,畫面會變成黑屏或者凍屏(停留在最後一幀),這種體驗是非常差的。為瞭解決這個問題,我們引入了 waiting-image 屬性,您可以設置一張有 “稍候” 含義的圖片(waiting-image 是該圖片的 URL,waiting-image-hash 則是該圖片對應的 md5 校驗值)。當微信切到後臺以後,小程式會使用該圖片作為攝像頭畫面的替代,以極低的流量占用維持視頻流3分鐘時間。
-
debug 調試音視頻相關功能,如果沒有很好的工具會是一個噩夢,所以小程式為 live-pusher 標簽支持了 debug 模式,開始 debug 模式之後,原本用於渲染視頻畫面的視窗上,會顯示一個半透明的 log 視窗,用於展示各項音視頻指標和事件,降低您調試相關功能的難度,具體使用方法我們在 FAQ 中有詳細說明。
參數設置
場景 | mode | min-bitrate | max-bitrate | audio-quality | 說明 |
---|---|---|---|---|---|
標清直播 | SD | 300kbps | 800kbps | high | 窄帶場景,例如戶外或者網路不穩定的情況下適用 |
高清直播 | HD | 600kbps | 1200kbps | high | 目前主流的 App 所採用的參數設定,普通直播場景推薦使用這一檔 |
超清直播 | FHD | 600kbps | 1800kbps | high | 對清晰度要求比較苛刻的場景,普通手機觀看使用 HD 即可 |
視頻客服(用戶) | RTC | 200kbps | 500kbps | high | 這是一種聲音為主,畫面為輔的場景,所以畫質不要設置的太高 |
車險定損(車主) | RTC | 200kbps | 1200kbps | high | 由於可能要看車況詳情,畫質上限會設置的高一些 |
多人會議(主講) | RTC | 200kbps | 1000kbps | high | 主講人畫質可以適當高一些,參與的質量可以設置的低一些 |
多人會議(參與) | RTC | 150kbps | 300kbps | low | 作為會議參與者,不需要太高的畫質和音質 |
如果不是對帶寬特別沒有信心的應用場景,audio-quality 選項請不要選擇 low,其音質和延遲感都要會比 high 模式差很多。
對象操作
- wx.createLivePusherContext() 通過 wx.createLivePusherContext() 可以將 標簽和 javascript 對象關聯起來,之後即可操作該對象。
- start 開始推流,如果 的 autopush 屬性設置為 false(預設值),那麼就可以使用 start 來手動開始推流。
- stop 停止推流。
- pause 暫停推流。
- resume 恢復推流,請與 pause 操作配對使用。
- switchCamera 切換前後攝像頭。
- snapshot 推流截圖,截圖大小跟組件的大小一致。截圖成功圖片的臨時路徑為
ret.tempImagePath
。
代碼實例
var pusher = wx.createLivePusherContext('pusher'); pusher.start({ success: function(ret){ console.log('start push success!') } fail: function(){ console.log('start push failed!') } complete: function(){ console.log('start push complete!') } });
內部事件
通過 標簽的 bindstatechange 屬性可以綁定一個事件處理函數,該函數可以監聽推流模塊的內部事件和異常通知。
常規事件
code | 事件定義 | 含義說明 |
---|---|---|
1001 | PUSH_EVT_CONNECT_SUCC | 已經成功連接到雲端伺服器 |
1002 | PUSH_EVT_PUSH_BEGIN | 與伺服器握手完畢,一切正常,準備開始上行推流 |
1003 | PUSH_EVT_OPEN_CAMERA_SUCC | 已成功啟動攝像頭,攝像頭被占用或者被限制許可權的情況下無法打開 |
嚴重錯誤
code | 事件定義 | 含義說明 |
---|---|---|
-1301 | PUSH_ERR_OPEN_CAMERA_FAIL | 打開攝像頭失敗 |
-1302 | PUSH_ERR_OPEN_MIC_FAIL | 打開麥克風失敗 |
-1303 | PUSH_ERR_VIDEO_ENCODE_FAIL | 視頻編碼失敗 |
-1304 | PUSH_ERR_AUDIO_ENCODE_FAIL | 音頻編碼失敗 |
-1305 | PUSH_ERR_UNSUPPORTED_RESOLUTION | 不支持的視頻解析度 |
-1306 | PUSH_ERR_UNSUPPORTED_SAMPLERATE | 不支持的音頻採樣率 |
-1307 | PUSH_ERR_NET_DISCONNECT | 網路斷連,且經三次重連無效,可以放棄,更多重試請 自行重啟推流 |
警告事件
內部警告並非不可恢復的錯誤,小程式內部的音視頻 SDK 會啟動相應的恢復措施,警告的目的主要用於提示開發者或者最終用戶,例如:
- PUSH_WARNING_NET_BUSY 上行網速不給力,建議提示用戶改善當前的網路環境,例如讓用戶離家裡的路由器近一點,或者切到 Wi-Fi 環境下再使用。
- PUSH_WARNING_SERVER_DISCONNECT 請求被後臺拒絕了,出現這個問題一般是由於 URL 里的 txSecret 計算錯了,或者是 URL 被其他人占用了(跟播放不同,一個推流 URL 同時只能有一個用戶使用)。
- PUSH_WARNING_HANDUP_STOP 當用戶單擊小程式右上角的圓圈或者返回按鈕時,微信會將小程式掛起,此時 會拋出5000這個事件。
code | 事件定義 | 含義說明 |
---|---|---|
1101 | PUSH_WARNING_NET_BUSY | 上行網速不夠用,建議提示用戶改善當前的網路環境 |
1102 | PUSH_WARNING_RECONNECT | 網路斷連,已啟動重連流程(重試失敗超過三次會放棄) |
1103 | PUSH_WARNING_HW_ACCELERATION_FAIL | 硬編碼啟動失敗,自動切換到軟編碼 |
1107 | PUSH_WARNING_SWITCH_SWENC | 由於機器性能問題,自動切換到硬體編碼 |
3001 | PUSH_WARNING_DNS_FAIL | DNS 解析失敗,啟動重試流程 |
3002 | PUSH_WARNING_SEVER_CONN_FAIL | 伺服器連接失敗,啟動重試流程 |
3003 | PUSH_WARNING_SHAKE_FAIL | 伺服器握手失敗,啟動重試流程 |
3004 | PUSH_WARNING_SERVER_DISCONNECT | 伺服器主動斷開連接,啟動重試流程 |
3005 | PUSH_WARNING_SERVER_DISCONNECT | socket 鏈路異常斷開 ,啟動重試流程 |
5000 | PUSH_WARNING_HANDUP_STOP | 小程式被用戶掛起 |
代碼實例
Page({ onPush: function(ret) { if(ret.detail.code == 1002) { console.log('推流成功了',ret); } }, /** * 生命周期函數--監聽頁面載入 */ onLoad: function (options) { //... } })