直播开发为什么要用两种流媒体传输协议?HLS和RTMP的优缺点

分享于:2020-12-02 17:27:46

在进行直播开发时,我们可能会遇到一些小疑惑,比如,音频编码格式用AAC好还是MP3好?流媒体传输用RTMP好还是用HLS好?当然,也有人问过我这样一个问题,为什么要同时使用HLS和RTMP,本篇文章就来谈谈这是为什么。


一、 直播开发为什么要用到流媒体传输协议


常用的流媒体协议主要有HTTP渐进下载和基于RTSP/RTP的实时流媒体协议两类,原则上,RTSP,RTMP,HTTP都可以做直播和点播,通常做直播开发会用RTMP协议。

直播时,主播端将直播流推向服务器,用户端发起请求从服务器拉视频流过来解码播放,这样就实现了直播。

在直播中,想要进行推拉流,就要用到流媒体传输协议,没有传输协议,视频流无法进行传输。


ae51f3deb48f8c54fdeecae540e85bf1e1fe7f04.jpeg

二、 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),支持平滑扩展。


342ac65c10385343b1319a5de9d2c67acb808811.jpeg

四、 为什么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