小程序常见问题(FAQ)


<live-pusher>、<live-player>标签无法正常使用?

发布时间:2018年6月12日 更新时间:2018年6月12日 贡献者:zilongye

出于政策和合规的考虑,微信暂时没有放开所有小程序对 <live-pusher> 和 <live-player> 标签的支持:

  • 个人账号和企业账号的小程序暂时只开放如下表格中的类目;
  • 符合类目要求的小程序,需要在小程序管理后台的 “设置 - 接口设置” 中自助开通该组件权限。
主类目 子类目
【社交】 直播
【教育】 在线教育
【医疗】 互联网医院,公立医院
【政务民生】 所有二级类目
【金融】 基金、信托、保险、银行、证券/期货、非金融机构自营小额贷款、征信业务、消费金融

[注意] 如果以上设置都正确,但小程序依然不能正常工作,可能是微信内部的缓存没更新,请删除小程序并重启微信后,再进行尝试。


运行小程序进入多人音视频看不到画面?

发布时间:2018年6月12日 更新时间:2018年6月12日 贡献者:zilongye

  • 请确认使用手机来运行,微信开发者工具内部的模拟器目前还不支持直接运行
  • 请确认小程序基础库版本 wx.getSystemInfo 可以查询到该信息,1.7.0 以上的基础库才支持音视频能力。
  • 请确认小程序所属的类目,由于监管要求,并非所有类目的小程序都开发了音视频能力,已支持的类目请参考 DOC
  • 如有更多需求,或希望深度合作,可以提工单或客服电话(400-9100-100)联系我们。

运行Demo报错提示没有权限怎么办?

发布时间:2018年6月12日 更新时间:2018年6月12日 贡献者:zilongye

运行Demo报错提示:fail jsapi has no permission

没有权限

原因:小程序个人账号和企业账号需要符合指定类目,请确认账号类目是否符合要求。


运行小程序 Demo 报错登录 RoomService 鉴权失败?

发布时间:2018年6月12日 更新时间:2018年6月12日 贡献者:zilongye

运行小程序 Demo 报错: "code": 7, "message":"鉴权失败"

鉴权失败

按如下方式进行处理:

  1. Demo 默认业务后台请求地址测试 room.qcloud.com 看会不会有这个问题,没问题的话说明是业务后台的问题;
  2. 确认后台部署的 server 源码 config.js 的直播参数和 IM 参数填写正确,可以参考文档:一键部署_NodeJS

<live-pusher>、<live-player>标签使用及错误码参考

发布时间:2018年6月12日 更新时间:2018年6月12日 贡献者:zilongye

<live-pusher>错误码

<live-player>错误码

livePusherContext

livePlayerContext


<live-pusher>、<live-player>标签绑定点击事件无效?

发布时间:2018年6月12日 更新时间:2018年6月12日 贡献者:zilongye

这2个标签是小程序原生标签,还不支持,需要在 cover-view 标签绑定。


小程序推流黑屏?

发布时间:2018年6月12日 更新时间:2018年6月12日 贡献者:zilongye

一般是由于在 start 之前没有成功设置 URL,导致启动推流时没有推流地址而失败(摄像头黑的)。

如果设置了 autopush 的属性,需要给 <live-pusher> 加上 wx:if,判断 URL 有效再插入标签。

如果通过 setData 后调用 start 启动推流,start 调用一定要放在 setData 成功的回调里,因为 setData 是异步的。


连麦和多人音视频最多支持几路?

发布时间:2018年6月12日 更新时间:2018年6月12日 贡献者:zilongye

最多10路,和手机性能有关。


小程序音视频功能怎么拿推流地址?

发布时间:2018年6月12日 更新时间:2018年6月12日 贡献者:zilongye

默认的 RoomService 生成的推流地址流 id 的格式是 bizid_userId,同时调试的log会打印出来这个地址


双人音视频和多人音视频支不支持纯音频?

发布时间:2018年6月12日 更新时间:2018年6月12日 贡献者:zilongye

支持,<rtc-room> 是自定义组件,需要客户在 components 里面 <rtc-room> 添加下 enable-camera 属性,并在 js 里面进行绑定.


如何实现小程序与其它端的房间互通?

发布时间:2018年6月12日 更新时间:2018年6月12日 贡献者:zilongye

通过将小程序一键部署的 业务请求域名RoomService 请求域名配置到其它端实现。


如果需要上线或者部署正式环境怎么办?

发布时间:2018年6月12日 更新时间:2018年6月12日 贡献者:zilongye

  1. 申请域名并做备案
  2. 将服务端代码部署到申请的服务器上
  3. 将业务 server 域名、RoomService 域名及 IM 域名配置到小程序控制台 request 合法域名里面,其中:
    IM 域名为:https://webim.tim.qq.com
    RoomService 域名为:https://room.qcloud.com 配置域名

如何选用分辨率比例?

发布时间:2018年6月12日 更新时间:2018年6月12日 贡献者:jasonxiao

分辨率比例通过 aspect 设置,目前有 3:4 和 9:16 两种,根据当前推流与播放画面在手机上的显示区域比例来设置。手机竖屏状态一般都是 9:16 比例,如果一个人推流满屏,则设置 9:16 ;如果双人并排展示,一个推流一个播放,显示区域为 3:4 比例,则设置 3:4。


各种场景如何选用 SD、HD、FHD、RTC 模式,最小最大码率如何设置?

发布时间:2018年6月12日 更新时间:2018年6月12日 贡献者:jasonxiao

模式选择及码率设置请参考 <live-pusher> 标签参数设置部分。


推流及播放关键事件如何监听?

发布时间:2018年6月12日 更新时间:2018年6月12日 贡献者:jasonxiao

推流事件监听请参考 <live-pusher> 标签内部事件部分。

播放事件监听请参考 <live-player> 标签内部事件部分。


部分手机 <live-pusher> 标签会插入失败?

发布时间:2018年6月12日 更新时间:2018年6月12日 贡献者:jasonxiao

目前这是一个已知问题,下个版本会修复,暂时没有办法捕获这种异常提示用户开启麦克风与相机权限。

客户在开发过程中如果遇到 log 提示:“insertLivePusher:fail:system permission denied” 表明没有麦克风与相机权限,请在设置项里检查麦克风与相机权限,确保麦克风与相机权限已经打开。


小程序 <live-player> 标签偶现黑屏或者播放失败?

发布时间:2018年6月12日 更新时间:2018年6月12日 贡献者:jasonxiao

这里需要先了解微信小程序 Page 生命周期,参考 小程序页面生命周期

小程序 Page 生命周期,onLoad 只做数据加载还未做页面渲染,此时 <live-pusher>、<live-player> 标签还未创建完成,获取或者调用 livepushercontextliveplayercontext 的方法行为不确定。onReady 表示页面已经加载,完成初次渲染,跟 <live-pusher>、<live-player> 标签相关的操作都需要放在 onReady 里面实现。

举例说明:

  onReady: function () {
    var self = this;
    this.data.videoContext = wx.createLivePlayerContext("video-livePlayer");
    this.setData({
      playUrl: "rtmp://live.hkstv.hk.lxdns.com/live/hks",
    }, function () {
      self.data.videoContext.stop();
      self.data.videoContext.play();
    })
  },

<live-player> 标签设置 style=”display:block” 出现 log 叠加如何解决?

发布时间:2018年6月12日 更新时间:2018年6月12日 贡献者:jasonxiao

此问题为已知的问题,如果想通过 style 的 display 属性来控制 <live-player> 标签的显示与隐藏,推荐隐藏设置为 style=”display:none” ,显示的时候 display 采用默认值不做任何修改。


使用同一个 <live-player> 标签播放不同的 URL 不生效如何解决?

发布时间:2018年6月12日 更新时间:2018年6月12日 贡献者:jasonxiao

当模式为 autoplay 时,playUrl 变更目前不会自动播放;非 autoplay 模式时改变 playUrl 之后需要调用 play 函数。因此不论哪种模式当改变 playUrl 播放另外一个流地址时,推荐的做法为:

  onPlay: function () {
    var self = this;
    this.data.videoContext = wx.createLivePlayerContext("video-livePlayer");
    this.setData({
      playUrl: "rtmp://live.hkstv.hk.lxdns.com/live/hks",
    }, function () {
      self.data.videoContext.stop();
      self.data.videoContext.play();
    })
  },

请注意这里一定要在 setData 的回调里面调用 videoContext 的方法,同时要先调用 stop 再调用 start


<live-player> 标签动态设置 mode 属性不生效如何解决?

发布时间:2018年6月12日 更新时间:2018年6月12日 贡献者:jasonxiao

目前动态设置 mode 属性没有做到动态生效,需要重新 stopstart,具体请参考如下使用方式:

  onChangeMode: function () {
    var self = this;
    this.data.videoContext = wx.createLivePlayerContext("video-livePlayer");
      if (this.data.mode == "live") {
      this.setData({ mode: "RTC"}, function () {
          self.data.videoContext.stop();
          self.data.videoContext.play();
        });
    }
    else {
      this.setData({ mode: "live"}, function () {
        self.data.videoContext.stop();
        self.data.videoContext.play();
      });
    }
  },

Android 小程序 <live-player> 标签在 RTC 模式下部分手机设置 muted 属性为何不能静音?

发布时间:2018年6月12日 更新时间:2018年6月12日 贡献者:jasonxiao

这是一个已知的 bug,我们会尽快在 SDK 中修复,并赶上微信下一个版本的发布。


<live-pusher> 标签动态修改 enable-camera 属性不生效如何解决?

发布时间:2018年6月12日 更新时间:2018年6月12日 贡献者:jasonxiao

目前 enable-camera 属性不支持动态生效,需要提前设置,即不支持在推流的过程中动态开启/关闭摄像头,必须在推流之前设置好这个属性。如果需要动态生效推荐的使用方式如下:

  onEnableCamera: function () {
    var self = this;
    this.data.videoContext = wx.createLivePusherContext("video-livePusher");
    this.setData({
        enable-camera: "true"
    },function () {
        self.data.videoContext.stop();
        self.data.videoContext.start();
    });
  },

建议在页面 onUnload 里面对 <live-pusher> 与 <live-player> 标签做清理

发布时间:2018年6月12日 更新时间:2018年6月12日 贡献者:jasonxiao

具体请参考如下:

  onUnload: function () {
    self.data.pusherContext && self.data.pusherContext.stop();
    self.data.playerContext && self.data.playerContext.stop();
  },

<live-pusher> 或 <live-player> 标签上面叠加 cover-view 时不推荐修改标签的大小

发布时间:2018年6月12日 更新时间:2018年6月12日 贡献者:jasonxiao

当前 <live-pusher> 或 <live-player> 大小变化时,iOS版本小程序对叠加在上面的 cover-view 不能追随变化,界面显示不可预期, 因此当在 <live-pusher> 或 <live-player> 标签上面叠加 cover-view 时,不要动态修改 <live-pusher> 或 <live-player> 标签的大小。


Demo 源码里面的 <cameraview> 有什么作用?

发布时间:2018年6月12日 更新时间:2018年6月12日 贡献者:jasonxiao

由于仅仅依靠 <live-pusher> 和 <live-player> 两个标签实现实时音视频通话(尤其是多人视频通话),需要大量的开发工作。所以我们基于微信小程序原生的 自定义组件 能力,将复杂的状态管理和业务逻辑封装在了这个叫做 <cameraview> 的自定义标签中,您可以通过源码包中 doubleroom\room\room.js 里的代码看到如何使用 <cameraview> 和 <live-player> 快速构建一个双人音视频通话功能。


小程序推流<live-pusher>怎么设置分辨率?

发布时间:2018年8月20日 更新时间:2018年8月20日 贡献者:zilongye

通过设置码率达到设置分辨率的效果。小程序内部会自动处理好分辨率和码率的关系,比如 2Mbps 的码率,小程序会选择 720p 的分辨率进行匹配,而 300kbps 的码率下,小程序则会选择较低的分辨率来提高编码效率。


小程序推流<live-pusher&gt标签设置aspect属性没有效果?

发布时间:2018年8月29日 更新时间:2018年8月29日 贡献者:zilongye

<live-pusher&gt标签aspect属性默认9:16的比例,3:4的比例只有在多人连麦场景下设置才有效果。

results matching ""

    No results matching ""