手机直播源码系统开发流程
首先第一步,采集,iOS是比较简单的,Android则要做些机型适配工作,PC最麻烦各种奇葩摄像头驱动,出了问题特别不好处理,建议放弃PC只支持手机主播,目前几个新进的直播平台都是这样的。
第二部,前处理,现在bogo18直播美颜已经是标配了,80%的主播没有美颜根本没法看。美颜算法需要用到GPU编程,需要懂图像处理算法的人,没有好的开源实现,要自己参考论文去研究。难点不在于美颜效果,而在于GPU占用和美颜效果之间找平衡。GPU虽然性能好,但是也是有功耗的,GPU占用太高会导致手机发烫,而手机发烫会导致摄像头采集掉帧,iPhone6尤其明显,因为iPhone6的CPU和前置摄像头很近。
第三部,编码,肯定要采用硬编码,软编码720p完全没希望,勉强能编码也会导致CPU过热烫到摄像头。硬编码兼容性又是一个大坑,android上要有人去填。编码要在分辨率,帧率,码率,GOP等参数设计上找到最佳平衡点。
第四部,传输,自己做不现实,交给CDN服务商吧,也就是贵了点,相信有志于做bogo18直播平台改变世界的你不差钱。假设2W PCU大约每月带宽费用100万左右,因为清晰流畅的720p要1.5mbps左右。CDN只提供了带宽和服务器间传输,发送和接收端的网络连接抖动缓冲还是要自己写的。不想要卡顿,必然要加大缓冲,会导致延迟高,延迟高影响互动性,要做权衡。
要想用于推流还必须把音视频数据使用传输协议进行封装,变成流数据。常用的流传输协议有RTSP、RTMP、HLS等,使用RTMP传输的延时通常在1–3秒,对于移动直播这种实时性要求非常高的场景,RTMP也成为移动直播中最常用的流传输协议。最后通过一定的Qos算法将音视频流数据推送到网络断,通过CDN进行分发。在直播场景中,网络不稳定是非常常见的,这时就需要Qos来保证网络不稳情况下的用户观看直播的体验,通常是通过主播端和播放端设置缓存,让码率均匀。另外,针对实时变化的网络状况,动态码率和帧率也是最常用的策略。
借助bogo18直播行业2018年平稳发展的东风,一对一直播平台开发受到了广泛地关注。正如直播源码那样,通过一对一直播源码可以快速搭建部署一个一对一视频直播平台。而一对一直播平台的功能具有更强的社交性,同时也有更加私密的直播体验。
1.主播列表推荐机制
不论是传统的直播平台还是今年异常火爆的抖音短视频,主播与视频的智能推荐机制是显示了平台的硬实力。这里我们举一个简单可操作的关于一对一直播系统主播推荐机制的例子
假设平台有推荐主播、新人主播、关注主播三个列表。针对三个不同的列表我们可以建立以下的推荐机制:
推荐主播列表和新人主播类表,可以按照在线>活跃>在聊的顺序进行排序,如果想要遵循平台的推荐机制,首先主播必须是在线状态,其次要看一下主播的活跃度(在线时长、开播时长等因素),最后如果主播时在聊状态,那可以往后排序(毕竟是一对一直播,主播在聊状态下,其他用户就无法再发起1v1直播的请求)。如果出现同等状态(即主播在线状态、活跃值相同),可再根据主播等级进行排序,当然也可以根据平台运营的需求,在管理后台设置推荐机制,人为将主播排序提前。
而关注主播列表则显示的是用户已关注的并通过平台认证的主播,当然也可以参考推荐主播列表的推荐机制进行排序。这里我们提到了平台认证,不妨我们聊下认证机制的重要性。
2.关于系统认证机制
一对一直播平台应该与传统直播平台一致,具有真实的主播认证页面。这里我们可以将认证功能放到用户个人中心页面,点击进入认证功能页面后,除了要上传身份证,填写相关真实信息之外,在用户资料中也要进行明确的标识。一对一直播本身就具有私密性了,因此对于主播信息的真实性更要严格审核,同时也应该为平台用户展示真实的主播信息,让用户全面了解主播后,才能更好地提升用户体验。
这里我们可以结合主播的身份认证信息,要求主播填写真实的性别信息,否则不予通过审核,认证通过后也不能再修改性别信息。在主播用户中心的ID号后面要添加认证标识,如果主播没有进行认证,除了不显示认证标识外,还要强制主播跳转到认证页面进行认证。
3.关于预约一对一直播
一对一直播为用户提供了私密的互动直播空间,但是如果主播不在线,而粉丝又不可能一直在平台上干等着,那该怎么办呢?我们可以添加预约功能,同时要针对主播不同的直播状态给予粉丝不同的提示信息。
对于离线的主播,在主播个人主页点击“发起1v1直播”时,提示“当前主播已离线”,然后进行预约,在主播上线接受直播请求后会提示用户主播已上线接受“1v1直播”。
对于在聊的主播,在主播个人主页点击“发起1v1直播”时,提示“当前主播在聊”,然后主播可以在直播间收到“1v1直播”请求的消息提醒,可以通过私信形式回复用户。
当然,在网络传输方面全部自己来做基本不现实,找提供推流服务的CDN服务商提供解决方案是最好的选择。据了解,阿里云是国内唯一能自研CDN缓存服务器的厂商,性能非常有保障。当然,大多数直播平台都会同时接入多个视频云服务提供商,这样可以做拉流线路互备,对推流后视频集群再进行优化也可提高直播的流畅性和稳定性。