在进行直播开发时,我们可能会遇到一些小疑惑,比如,音频编码格式用AAC好还是MP3好?流媒体传输用RTMP好还是用HLS好?当然,也有人问过我这样一个问题,为什么要同时使用HLS和RTMP,本篇文章就来谈谈这是为什么。
一、 直播开发为什么要用到流媒体传输协议
常用的流媒体协议主要有HTTP渐进下载和基于RTSP/RTP的实时流媒体协议两类,原则上,RTSP,RTMP,HTTP都可以做直播和点播,通常做直播开发会用RTMP协议。
直播时,主播端将直播流推向服务器,用户端发起请求从服务器拉视频流过来解码播放,这样就实现了直播。
在直播中,想要进行推拉流,就要用到流媒体传输协议,没有传输协议,视频流无法进行传输。
二、 APP直播开发中用到的RTMP协议有什么优势
RTMP协议(Real Time Messaging Protocol)是一种流媒体传输协议,是直播APP中最常用的流媒体传输协议,它最主要的优势就是低延时。
RTMP 协议进行数据传输时,它是一整条数据流被封装成FLV通过HTTP提供出去,因此在服务器不会有落地文件,基于 TCP 长连接,不需要多次建连,所以延时通常为 1-3s,远超HLS。
三、 微信端直播开发中用到的HLS 协议有什么优势
HTTP Live Streaming协议被缩写为HLS,是苹果公司发布的基于HTTP的流媒体传输协议(因此苹果的所有系统都支持HLS)。
其工作原理是切片式传输,把直播流切成无数片,用户在观看视频时,每次客户端可以只下载一部分,然后在这部分播放时从许多不同的备用源中下载其他资源,因此HLS协议可以任由用户的意愿选择不同的码率。HLS基于 HTTP/80 传输,很少会被防火墙拦下。
此外,RTMP很难对视频服务器进行平滑扩展而HLS基于无状态协议(HTTP),支持平滑扩展。
四、 为什么APP直播开发用RTMP而微信端要用HLS
看了两者的优势,有没有感觉HLS传输协议比RTMP厉害太多了?其实不是哦,从流媒体传输协议的角度来看,HLS也不错,但立足于直播开发的角度来看,HLS就差点事儿了,直播要求的低延时,HLS绝对做不到,正因此,我们在做APP直播开发时,会选择用RTMP而不是HLS。
微信端用HLS是没办法的事,因为微信端不支持RTMP,而HLS表现良好,以较高的延迟换入门槛。
来源:https://baijiahao.baidu.com/s?id=1627055493270643586&wfr=spider&for=pc