這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助

使用須知
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="https://www.cnblogs.com/smileZAZ/archive/2023/02/07/{{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);
}
},
/**
* 生命周期函式--監聽頁面加載
*/
onl oad: 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);
}
},
/**
* 生命周期函式--監聽頁面加載
*/
onl oad: function (options) {
//...
}
})
本文轉載于:
https://juejin.cn/post/6986428160824836132
如果對您有所幫助,歡迎您點個關注,我會定時更新技術檔案,大家一起討論學習,一起進步,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/543240.html
標籤:其他
上一篇:9種跨域方式實作原理
