聲網(wǎng)(Agora)
- 聲網(wǎng) Agora 為開發(fā)者提供實時音視頻 API型酥,只需集成 Agora SDK,即可快速在應用內(nèi)構建多種實時互動場景焦蘑。
微信小程序
- 官方地址:https://docs.agora.io/cn/Video/miniapp_video?platform=%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F
-
首先在聲網(wǎng)創(chuàng)建賬號,進去后創(chuàng)建項目,appid是指項目的appid
以上因為瀏覽器原因自動翻譯頁面,可能會看到不太一樣,如果使用安全的食品通話,開啟上圖中的app證書,打開信令調試開關
- 微信小程序接入視頻通話,需要聲網(wǎng)給開通小程序的權限
(1) 給聲網(wǎng)郵箱發(fā)送郵件,注明開通微信小程序接入權限,并給發(fā)送appid(appid是聲網(wǎng)注冊是創(chuàng)建項目的appid)
郵箱賬號: sales@agora.io
(2)給聲網(wǎng)客服打電話開通,聲網(wǎng)電話:400 6326626
注:給官網(wǎng)郵箱發(fā)郵件,沒人回復我,后來還是打客服開通的,客服態(tài)度很好哦
- 下載小程序sdk
https://docs.agora.io/cn/Agora%20Platform/downloads - 小程序引入
const AgoraMiniappSDK = require('../../lib/Agora_Miniapp_SDK_for_WeChat.js');
- 小程序接入代碼片段
// 推流上下文
this.ctx = wx.createLivePusherContext("livePush");
// 拉流上下文
this.liveP = wx.createLivePlayerContext('livePlayer');
var that = this;
let client = new AgoraMiniappSDK.Client();
that.setData({
client: client
});
// 初始化
client.init("這是你的appid", function () {
// 初始化成功
console.log("初始化成功");
client.join("token 如果沒有寫null", "房間號", "這里是用戶uid", function (uid) {
// 加入成功
console.log("加入成功User " + uid + " join channel successfully");
// 發(fā)布本地音頻流并獲取推流 url 地址
client.publish(function (res) {
// 發(fā)布成功
console.log("發(fā)布成功pushPath" + res);
that.setData({
pushPath: res
})
// 監(jiān)聽
client.on('error', function (err) {
console.log("Got error msg:", err.reason);
if (err.reason === 'DYNAMIC_KEY_TIMEOUT') {
client.renewChannelKey(that.data.fangjianhao, function () {
console.log("Renew channel key successfully");
}, function (err) {
console.log("Renew channel key failed: ", err);
});
}
});
// 監(jiān)聽遠程視頻添加
client.on('stream-added', function (evt) {
client.subscribe(evt.uid, function (res) {
console.log("訂閱視頻流成功playUrl" + res);
that.setData({
playUrl: res
});
}, function (err) {
console.log("訂閱視頻流錯誤", err);
});
});
client.on('update-url', function (evt) {
console.log("視頻播放", evt);
});
client.on('stream-removed', function (evt) {
console.log("視頻停止播放");
});
client.on('video-rotation', function (evt) {
console.log(evt.uid + " leaved from this channel");
});
}, function (err) {
// 發(fā)布失敗
console.log("發(fā)布失敗" + err);
});
}, function (err) {
// 加入失敗
console.log("加入失敗", err);
});
}, function (err) {
//初始化失敗
console.log("初始化失敗", err);
});
注: 不同appid不能通話
官網(wǎng)api:https://docs.agora.io/cn/Video/API%20Reference/wechat/index.html
- 官網(wǎng)小程序demo地址
https://github.com/AgoraIO/Agora-Miniapp-Tutorial
- 實現(xiàn)web和小程序互通注意
(1) 下載官方web端的示例demo,注意訪問地址是https或是本地localhost
(2) 如果不添加一下代碼,web端不影響,小程序端只有聲音,并沒有視頻
(3) 以上本地調試應該沒有問題,如果不成功打開小程序端的"打開調試",正式版還需要配置聲網(wǎng)的域名(如下所示):
https://miniapp.agoraio.cn
https://miniapp-1.agoraio.cn
https://miniapp-2.agoraio.cn
https://miniapp-3.agoraio.cn
https://miniapp-4.agoraio.cn
https://uni-webcollector.agora.io
wss://miniapp.agoraio.cn
示例代碼:
client = AgoraRTC.createClient({mode: 'live'});
修改后:
client = AgoraRTC.createClient({mode: 'live',codec: "h264"});
注明
- 此代碼可能與官方示例代碼不太一樣,以官方代碼為準
- 希望各位批評指正,小編會努力改正的
- 微信組件live-player和live-pusher踩坑
(1) 對live-pusher進行start, stop,resume等操作時盯拱,會停止所有正在播放的live-player的聲音
(2) 一種是避免在live-player播放后操作live-pusher。比如進頁面直接開啟live-pusher例嘱,然后不再操作狡逢。官方DEMO就是使用這種方案。
第二種拼卵,則是每次操作live-pusher后奢浑,都重新調用live-player的play操作(感覺需要短暫的延遲調用)。不過這會引起正在播放的live-player音視頻的短暫中斷腋腮,體驗不是太好雀彼,所以業(yè)務許可的話,第一種更推薦即寡。