小程序<mlvb-live-room>是使用了live-pusher、live-player标签和IM sdk组成的一个适用于连麦互动的小程序直播组件。使用这个组件可以很简单的实现一个直播互动的小程序。虽然功能很好用,但是里面也有不少坑,今天我就来盘点一下。
官方文档介绍
第一个坑:没法试用连麦
这个问题是怎么表现的呢?假如你是第一次使用这个组件,想自己本地跑一下连麦效果,那么你大概率是会失败的,你发现你成功上麦之后,主播右下角会出现黑屏小画面,然后上麦的观众出现多次拉流失败的报错,之后上麦的这位观众就会推出直播间,如图下:
原因分析:出现这个问题主要是因为你这个sdk账号没有购买相应的套餐包,所以没办法体验上麦的功能。
解决方案:那必然只有购买相关套餐包才行了,购买入口如下图,或者你可以去腾讯云提供的线上demo进行体验
官方线上demo体验地址
第二个坑:无法使用纯音频上麦
上麦功能默认是会把视频也推送上去的,但是有些场景,可能说只想推送一个音频上去。文档上有一个参数可以推送纯音频。
mlvb组件api地址
这个时候我们可以考虑用这个参数去推送纯音频流,但是你会发现设置了这个参数之后,出现了问题:
- 上麦的人发现右下角自己的画面是黑的,但是声音推上去了;
- 没有上麦的人,听不到上麦的人声音,上麦的人互相能听见。
原因分析:
1. 我们其实可以去看看mlvb组件的源码,你会发现上面的那个纯音频推流的参数是用来控制live-pusher组件的enable-camera参数的。所以我是没有推送视频上去的,看到右下角的画面是黑的很正常。同时还有一点就是其他推纯音频流上来的人,画面也是黑的,这也是正常逻辑。
2. 其实上麦之后,在这个组件内部是有做混流的,未上麦的观众,看的是混流的画面,因为他们不需要追求超低延时,而上麦的观众对延迟要求比较高,所以他们的通道是查看的超低延时画面。这一点我们也可以从官网的文档中看出。
所以这上麦和未上麦的人看到的流其实是不一样的:
- 上麦的人走的是连麦通道,看的是超低延迟的流
- 未上麦的人走的是直播通道,看的是混流之后的flv流
所以上麦的人能互相听到声音,说明推流没有问题,但是未上麦的人听不到上麦人的声音,说明混流失败了,纯音频流没有混进去。
解决方案:
1. 这个表现其实是正常逻辑的现象,不过黑屏的话始终不够好看,大家可以去通过修改ui去优化这一块。位置见下图
2. 混流失败的话,我们得先去看看混流的代码逻辑。经过排查发现混流的接口所需要的数据都是通过createMergeInfo方法去构建的。
顺着代码找,我们可以找到小主播的混流信息构建的位置。
目前,mlvb这个组件里面使用的混流接口还是v3.0的,所以我们需要去查看v3.0的接口。
我们会发现,如果是纯音频推流,我们还需要设置一个input_type字段去做标识才行。
混流接口v3.0
设置好这个参数之后,混流的画面也可以听到上麦人的声音了。