本文汇总小程序 SDK 常见问题和解决方法。
推流/拉流处理可以参考或直接使用 GitHub 上开源代码。
可以通过设置小程序的 live-pusher 组件中的 waiting-image 属性来处理。设置后,推流端退到后台时,可以推送静态图片来维持推流,其他端会收到本端预设的 waiting-image 图片来代替视频流。 除非通过一些方式 (例如后台播放背景音乐),小程序会在某些场景下断开 websocket 或者 rtmp 连接,例如点击右上角按钮将程序退到后台。这种情况下,若回到前台后收到 error code 904 或 501,则应使用 SDK 进行重连,具体方法请参考 重新加入频道 rejoin 中的描述。
如需只启用小程序的音频功能,不需要发送视频,你直接使用微信小程序的接口处理即可。在小程序的 live-pusher 组件中,通过设置 enable-camera 来实现开启/关闭摄像头。详见 小程序 live-pusher 组件文档。
在某些社交娱乐场景中,小程序会需要播放背景音乐。微信小程序的背景音频需要用微信小程序的原生 API 来集成实现,声网微信小程序 SDK 无法建立音频播放器。
你可以通过 wx.getBackgroundAudioManager()
接口获取全局唯一的背景音频管理器,并调用 BackgroundAudioManager
类提供的接口来管理背景音频。
小程序 SDK 只支持 48 kHz 采样率。集成时,请在 live-pusher 组件中将音质设为高音质,以表示采样率为 48 kHz:
audio-quality = "high"
如果设置其他采样率,远端用户可能无法听到小程序用户的声音。
集成小程序 SDK 时,你可以调用如下 API 实现上传,保存和打开日志:
上传日志:
如果你使用 v2.6.0 或更高版本的小程序 SDK,无需自己保存日志,可通过 uploadLogs
API 上传日志。
保存日志:
如果想要获取日志,需要将 text 保存在一个文件中。如果需要排查问题,可以将出现问题时间段的日志提供给声网支持人员。
// text 为字符串形式。
AgoraMiniappSDK.LOG.onLog = (text) => {
Utils.log(text);
};
AgoraMiniappSDK.LOG.setLogLevel(-1)
;频道中有小程序 SDK 和 Native SDK 时,可以选择如下一种方式实现互通:
小程序和 Native 互通时,Native 端视频画面可能出现上下颠倒。该问题可能是由于 Native SDK 中的 setVideoEncoderConfiguration
设置的方向模式 orientationMode
为 ORIENTATION_MODE.ORIENTATION_MODE_ADAPTIVE
导致的。解决方法是,将方向模式改成 ORIENTATION_MODE.ORIENTATION_MODE_FIXED_PORTRAIT
就可以解决问题。
小程序和 Web 互通时,可能出现 Web 端可以看到小程序的视频,但小程序看不到 Web 端的视频。该问题可能是由于编解码格式不被支持导致的。
Web 与小程序互通时,Web 端只支持 H264 模式的编码,不支持 VP8。将 Web SDK 的 index.html
文件修改为如下设置即可:client = AgoraRtc.createClient({mode: "live", codec: "h264"})
;
客户端调用 client.publish 方法后,会回调一个以 rtmp 开头的临时地址,这个地址就分别是 live-player 和 live-pusher 组件中的 rtmp 播放地址 和 rtmp 推流地址。你可以将其填入 src 字段。
微信小程序可以在 WebView 网页中调用声网 Web SDK 4.x 的接口,详见 Web SDK 4.x API 文档。
你可以使用小程序的 cover-view
标签覆盖在用于实时音视频播放和录制的 live-player
和 live-pusher
的组件。详见微信小程序官方文档。
这个问题可能是因为启用了其它 Websocket,但没有开启验证 Https 引起的。如需启用其它的 Websocket,请查看本地设置,不要勾选“不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书”。
通常,客户端初始化失败,会伴随着错误码 901 或 903,处理方法如下:
小程序 SDK 在调用 API 或运行时,可能会返回一个错误码对象,也可能会返回一个错误码。详细可以参考 错误码和警告码 进行排查。
编译小程序时,出现如下图所示的 MiniProgramError: @babel
相关报错。
问题原因:小程序使用了符合 ES6+ 语法标准的代码,但低版本手机系统只能编译符合 ES5 语法标准的代码,所以在低版本手机系统中编译小程序时会出现该问题。需要将代码编译成 ES5 才能真机调试。
解决方案:你可以尝试在微信开发者工具中开启将 JS 代码编译成 ES5功能,再重新编译程序。