本次分析是基于 斗音/灿/东瓜/慢手
1. 原理说明
1.1 音频视频采集:
主播通过手机或者其它视频音频设备采集原始的视频音频,其中视频会经过编码压缩成 H.264等格式,音频会编码压缩成 MP3等格式,然后推送到服务器;
为了增强一些现场效果或者加上一些额外的效果,一般会在将其编码压缩前进行处理,比如打上时间戳或者公司 Logo 的水印,祛斑美颜和声音混淆等处理
1.2推流到CDN:
把已经处理的数据流,推到CDN服务商的源站。此时会尽量保证不同地域的边缘CDN服务器都能及时收到缓存的视频数据流
1.3用户获取直播URL:
用户通过客户端访问该直播时,会返回一个该直播视频流的URL,一般该URL是http格式的;
因为用户环境的复杂性,所以,一般选用HTTP进行数据流交互,能内网穿透,且可以保证包的及时性
1.4访问直播 URL:
用户访问该URL时,首先CDN提供商会把该URL映射到离用户最近的CDN服务器节点,然后,用户直接与该服务器建立http连接,把视频数据流下载到本地
然后本地的客户端(比如APP)会把该数据流解析并播放到用户的显示设备
2. 看直播
2.1 看直播的过程
1. 选择一个要看的直播:
此时直播只有一个图片、文字描述等
2. 获取该直播对应的URL地址:
当点击要观看的直播时,会获取对应URL地址,该地址才是真实的直播地址
3. 访问该URL, 观看直播:
建立http连接,获取视频流数据,并在客户端播放
几个问题说明:
1. rtsp/rtp/rtcp都是在推流到cdn时使用的, 一开始以为是在看直播的时候用的
2. 为什么直播不使用https呢? 大概率应该是 减小服务器压力, 要不然, 每个直播的流都进行一次加密, cpu得累死, 还有就是及时性也不能保证, 也许一加密, 就慢了几秒了..还有就是每一个数据都进行解密的话, 手机大概也抗不住
3. 除了直播的流是http的..其它点赞, 礼物都是走的https的, 用户信息也是https的, 几个平台都是
4. Android使用FLV格式的URL播放视频,IOS使用HLS格式URL播放视频
5. 各种直播源都可以使用vlc软件直接观看
6. 斗音/灿/东瓜/的 结构相似 , 一查, 原来真的是一个公司呀