2022「小程序 SDK」常见FAQ

Q1:小程序SDK如何推流/拉流?

小程序SDK的推流/拉流处理请参考或直接使用 GitHub 上开源代码中的写法。

参考: https://github.com/AgoraIO/Agora-Miniapp-Tutorial


Q2:如何处理小程序退后台?

可以通过设置小程序的 live-pusher 组件中的 waiting-image 属性来处理。

设置后,推流端退到后台时,可以推送静态图片来维持推流,其他端会收到本端预设的 waiting-image 图片来代替视频流。

除非通过一些方式 (例如后台播放背景音乐),小程序会在某些场景下断开 websocket 或者 rtmp 连接,例如点击右上角按钮将程序退到后台。这种情况下,若回到前台后收到 error code 904 或 501,则应使用 SDK 进行重连,具体方法请参考 重新加入频道 rejoin 中的描述。


Q3:如何处理小程序闪退问题?

这个问题可能是因为启用了其它 Websocket,但没有开启验证 Https 引起的。如需启用其它的 Websocket,请查看本地设置,不要勾选“不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书”。


Q4:只启用小程序的音频功能,不需要发送视频,应该如何设置?

直接使用微信小程序的原生接口进行处理即可。在小程序的 live-pusher 组件中,通过设置 enable-camera 来实现开启/关闭摄像头。

详见 小程序 live-pusher 组件文档: https://developers.weixin.qq.com/miniprogram/dev/component/live-pusher.html


Q5:小程序和 Native 如何进行互通?

频道中有小程序 SDK 和 Native SDK 时,可以选择如下一种方式实现互通:

Native 端在直播模式下,将用户角色设置为 AgoraClientRoleBroadcaster = 1:主播,实现互通

Native 端在直播模式下,不设置用户角色为主播,也可以接收到小程序端的流,实现互通


Q6:小程序和 Native 互通时,Native 端视频画面为什么上下颠倒?

该问题可能是由于 Native SDK 中的 setVideoEncoderConfiguration 设置的方向模式 orientationMode 为 ORIENTATION_MODE.ORIENTATION_MODE_ADAPTIVE 导致的。

解决方法是,将方向模式改成 ORIENTATION_MODE.ORIENTATION_MODE_FIXED_PORTRAIT 就可以解决问题。


Q7:小程序和 Web 互通时,Web 端可以看到小程序的视频,但小程序看不到 Web 端的视频?

Web 与小程序互通时,Web 端只支持 H264 模式的编码,不支持 VP8。

将 Web SDK 的 index.html 文件修改为如下设置即可:client = AgoraRtc.createClient({mode: "live", codec: "h264"});


Q8:小程序的 live-pusher 组件里的 src 应该写什么?

客户端调用 client.publish 方法后,会回调一个以 rtmp 开头的临时地址,这个地址就分别是 live-player 和 live-pusher 组件中的 rtmp 播放地址 和 rtmp 推流地址。


Q9:集成小程序 SDK 时,如何打开和保存日志?

调用如下 API 实现保存和打开日志:保存日志:
// text 为字符串形式。如果想要获取日志,需要将 text 保存在一个文件中。

如果需要排查问题,可以将出现问题时间段的日志提供给声网支持人员。

AgoraMiniappSDK.LOG.onlog = (text) => {Utils.log(text);};

打开日志:
AgoraMiniappSDK.LOG.setLogLevel(-1);


Q10:出现客户端初始化失败之后,该如何做?

通常,客户端初始化失败,会伴随着错误码 901 或 903,处理方法如下:901:出现错误码 901 绝大部分原因是没开小程序的服务权限,或没有配置域名,或 uid 参数格式不正确(uid 必须为整型)。

请参考快速开始中的开发环境要求完成设置后再尝试;

参考: https://docs.agora.io/cn/Interactive%20Broadcast/start_live_wechat?platform=%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F#%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E8%A6%81%E6%B1%82

903:这个错误通常是网络原因引起的;也可能是因为鉴权失败,如没有填 Token,或 Token 无效导致的。请检查并填入有效的 Token 进行尝试。


Q11:如何通过错误码排查问题?

Agora Miniapp SDK for WeChat 在调用 API 或运行时,可能会返回一个错误码对象,也可能会返回一个错误码。详细可以参考 错误码和警告码 进行排查。

参考: https://docs.agora.io/cn/Interactive%20Broadcast/error_rtc?platform=All%20Platforms#%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F


Q12:微信小程序可以在 WebView 网页中调用 Agora Web SDK 的接口吗?

微信小程序目前不支持在 WebView 网页中调用 Agora Web SDK 的接口。

要在微信小程序中快速实现实时音视频功能,你可以在小程序项目中集成 Agora 微信小程序 SDK。

详见集成微信小程序 SDK: https://docs.agora.io/cn/Interactive%20Broadcast/start_live_wechat?platform=%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F


Q13:在某些社交娱乐场景中,小程序会需要播放背景音乐,Agora 微信小程序 SDK 是否支持播放背景音乐?

微信小程序的背景音频需要用微信小程序的原生 API 来集成实现,Agora 微信小程序 SDK 无法建立音频播放器。你可以通过 wx.getBackgroundAudioManager() 接口获取全局唯一的背景音频管理器,并调用 BackgroundAudioManager 类提供的接口来管理背景音频。


Q14:小程序编译报错 TypeError: Function(...)is not a function如何处理?

你可以尝试在微信开发者工具中开启增强编译。

参考: https://developers.weixin.qq.com/miniprogram/dev/devtools/codecompile.html


Q15:小程序中可以使用 view 标签覆盖用于实时音视频播放和录制的 live-player 和 live-pusher 标签吗?

你可以使用小程序的 cover-view 标签覆盖 live-player 和 live-pusher 组件。

详见微信小程序官方文档: https://developers.weixin.qq.com/miniprogram/dev/component/cover-view.html


Q16:小程序互动直播如何实现旁路推流?

小程序客户端暂时不支持旁路推流,你可以在服务端实现。

服务端旁路推流请参考文档:旁路推流Restful API


Q17:Agora 微信小程序 SDK是否支持输入在线媒体流?

集成Agora 微信小程序 SDK,支持调用通过 RESTful API 创建云端播放器,将一路在线媒体流作为直播视频源输入到 Agora 频道内。输入成功后,该媒体流会在 Agora 频道内自动播放,供频道内的远端用户欣赏。

Agora 提供用于输入在线媒体流功能的服务端 API,包括:输入在线媒体流 RESTful API:通过你的业务服务器向 Agora 服务器发送 HTTPS 请求。

输入在线媒体流事件回调:开通 Agora 消息通知服务后,当订阅的事件发生时,Agora 服务器会以 HTTPS 请求的形式向你的服务器发送通知。

参考: https://docs.agora.io/cn/live-streaming-premium-4.x/inject_stream_restful_api?platform=All%20Platforms


Q18:集成Agora小程序SDK报错miniapp service is not enabled for this AppID

这个报错一般是由于权限问题导致的,请确认一下权限和配置是否都已经开通并配置完成:

1、声网控制台的小程序权限以及服务器域名

2、打开实时播放音视频流和实时录制音视频流的开关请参考文档: https://docs.agora.io/cn/video-call-4.x/start_call_wechat?platform=%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F#准备开发环境

3、使用的APPID是否具有微信开放平台实时直播相关的资质相关组件说明请参考链接: https://developers.weixin.qq.com/miniprogram/dev/component/live-pusher.html