"默认情况下,观众端播放器SDK不会和主播端直播推流SDK同步直播状态。
如果可以拉流,则正常播放;如果拉流失败,则等到30秒钟后超时,报告播放失败。(Android/iOS/Web播放器都可以自定义超时时间)
如果要同步直播状态,提升用户体验,则需结合您的应用服务器(AppServer)来处理,参考方法如下:
应用服务器需要维护下列对应关系(以下仅为示例):
用户账号UserID — 直播间号码RoomID — 直播频道cid — 直播状态 LiveStatus。
首先,主播进入直播间以后,开始进行直播,当直播推流SDK报告开始直播成功通知的时候,APP向应用服务器发送消息,告知直播已经开始,应用服务器收到此消息后,设置直播状态,例如:LiveStatus = 1,并将处于此直播状态的条目展示到直播大厅的直播列表中; 相应地,观众端每次进入直播大厅的时候,要向应用服务器请求最新的直播列表。
在直播过程中,APP定期向应用服务器发送消息,以保持同步直播状态。
主播切后台的时候,APP向应用服务器发消息,应用服务器收到此消息后,设置直播状态,例如:LiveStatus = 2,并将此消息推送到同一直播间的所有观众端APP,当观众端APP收到此消息后,可进行提示,例如“主播暂时离开,请稍候”。
当主播结束直播的时候,直播推流SDK返回成功结束直播通知以后,APP向应用服务器发送消息,应用服务器收到此消息后,设置直播状态,例如:LiveStatus = 0,并将此消息推送到同一直播间的所有观众端APP,当观众端APP接收到此消息后,可进行提示,例如“直播已结束”。
异常处理:如果超过特定的预设时间,应用服务器仍然没有收到对应主播端发送的任何消息,可以再到网易服务器同步一下直播状态。如果网易服务器也返回该直播频道状态为“空闲”,可以判定主播已经异常结束。 (异常情况举例:手机没电,进程被杀,网络中断等,主播端任何消息都发不出来)
附:网易云获取频道状态的接口,具体请见:直播服务端API文档(2.4 获取频道状态)
建议1:直播大厅列表可以允许所有观众查询,直播间消息只需对特定直播间内的用户进行同步推送即可。
建议2:刷新直播大厅列表时,一般都有图片,需要把图片进行缓存,已下载的图片不要再重新下载,这样既提升加载速度,也节省下载流量。当达到预设的缓存空间上限,或者APP退出时,再清除图片缓存。
* 版权声明 :社区问答内容由互联网用户编辑提交,本社区不拥有所有权,也不承担相关法律责任。如果您发现本社区中有涉嫌侵权、暴力、色情、反
动等言论,欢迎发送邮件至: 进行举报并提供初步证明,一经查实,本社区将立刻删除相关内容。