2020年4月1日与甲方签署一个技术委托开发,简单说甲方由思域流量的小程序商城。我们配套开发一款直播管理系统。配合商品销售。
直播端最早定位Android的APP,因为主播是私域流量可控制。最早技术选项是用Android原生开发。后端是由JAVA开发。整体开发人员只有5人。
- 后端JAVA一人,(SPRITE CLOUD)
- 前端(管理端平台)一人(VUE.ANT )
- Android一人(原生)
- 小程序一人
- 产品/测试一人
配套业务选型,当时微信小程序直播刚刚推出,技术尝试的时候也发现了很多坑。就没有选择小程序直播这个可能性。现在已经9月底了,应该已经成熟了很多(但是写拉流端的时候还是好多大坑套小坑),当时业务选项推拉流选择了七牛,聊天服务用socket 支持web和小程序,用java的netty支持的android(这个坑后来发酵了,才开始考虑用uni来写推流端)。
系统在7月中旬开始交付测试。开始出现问题,主要就是直播的聊天室服务。android的netty控制上出现了短板。(既然讲UNI就一嘴带过),不能支撑大业务量。当时预设场景是1000主播。当100主播在线,就开始出现问题,服务器是10M带宽,8G内存,SPRINT CLOUD 架构的。
8月份开始选择了腾讯云的IM服务,重写Android端。当然为了快速交付,采用了交替开发
一人负责推流端全部使用UNI开发
Android工程师负责把七牛直播插件写成arr
JAVA工程师负责接入IM服务
这样3个人1个月时间开始干起。
以上都是前言。整个开发过程的踩坑才刚刚开始。听我慢慢道来吧

第一个大坑:翻转摄像头
推流用uni开发有二种方式
使用组件 https://uniapp.dcloud.io/component/live-pusher
plus https://ask.dcloud.net.cn/article/13416
这二个组件都在开发环境中使用了,后来选择使用组件。原因很简单:plus 翻转摄像头这个功能。在切换应用在回到直播间后就翻转就会有问题,不是镜像了就是翻转不了。根本就无法控制。这个坑不相信的只写一个demo自己尝试一下就知道了,
第二个大坑:无解坑之镜像
在第一个大坑基础上。只能选择使用组件。可是组件默认是就是镜像的。推流端和拉流端前置摄像头镜像,后置摄像头是正常。尝试了无数方式,无解。有能解决的大神。一定给回个帖子。
怎么办,怎么办。
只能出大招了,按以下招数操作。
拉流端。使用了live-player 加入 style=”transform:rotateY(180deg)" 前置摄像头镜像解决。在推流端切换摄像头时候,让拉流端镜像回来。
这又会出现一坑“延时”,使用IM工具也好socket工具,发送翻转镜头指令和翻转的你在努力调都不会同步。肿么办!这个真无解。开始考虑把翻转和镜像做成2个功能按键。让主播自己选择呗。可是!!!! live-pusher不能镜像。肿么办!肿么办!
总之:如果用live-pluser还不是一个成熟的推流工具。还是要集成SDK啊。还是要依靠android原生arr。
甲方如果不在意这几秒的情况,还是有机会继续开发。
第三个坑:背景音乐的混入
直接贴个代码吧,背景音只能用手机的背景音乐播放器。不能喝推流端一起混音。这就是说:如果主播插个耳机播放背景音只能主播自己嗨起来了
this.bgAudioMannager = uni.getBackgroundAudioManager();
this.bgAudioMannager.play()
详见 https://uniapp.dcloud.io/api/media/background-audio-manager?id=getbackgroundaudiomanager
第四个坑:切换应用后页面崩塌
这个问题发生的可能性,很多种原因。建议设立全局函数,直播未结束,切换回来。根据状态自动恢复直播。
第五个坑:分享小程序
首先没有上架的APP,一天只能分享100次。这是硬伤。你要上架。上架面临这你要申请著作权。然后还不一定能上架成功。我记得我们就有一个回复,app功能太少不予上架的回复。当然分享这个功能还是有坑的。例如OPPO微信分身,可能不能使用分享功能。但也可能重新安装后就可以使用这个功能。不知道为什么!!!期望官方看看。几率有30%左右。这个几率也不知道是为什么会存在有一些没有微信分身的也掉不起来这个接口。
后来开始测试分享小程序这个功能到底什么问题出现的,发现还是分享小程序图片大小的问题,但是很奇怪。图片在100-200kb的时候可能就会出现问题,但是300-500之间反而不会出现。最后用 puls.zip 压缩一遍。都ok了。大家可以试试。具体原因还在分析。反正走了遍 plus.zip后可以了。
这里问问 谁有封装好七牛arr。再找