音视频开发基础(二)常用的直播协议

如今网络的发展已经从1G,2G,3G,4G逐渐过渡到5G,5G网络的出现,音视频的使用就变得越来越广。从以前的泛娱乐过渡到了更深次的领域,比如在线教育,在线会议…然而,要想有完美的视屏体验,还是要从很多方面考虑的。只有综合考虑这些潜在的影响因素,才能有更好的用户体验。其中推流和拉流就是其中很重要的一环。

竟然设计到视频的推流和拉流,那么就要设计到网络通信,而视频的网络通信是有多种方式的,分别适用于不同的场景。今天我们来介绍四种常用的协议:rtmp、http-flv、hls。下面分别简单讲一下这几种协议的特点。

常用的直播协议:

  • rtmp
    rtmp是实时消息传输协议,英文是Real Time Messaging Protocol,是 Adobe公司为 Flash 播放器和服务器之间音视频和数据传输开发的开放协议。协议基于tcp协议进行传输,实质上也是传输的flv格式的数据,不仅可以拉流,也可以推流。正常情况下拉流延迟在3s左右。

  • http-flv
    它直接基于http协议, 实际上就是将音视频数据封装成flv格式通过http协议进行传输。http-flv协议传送的数据可以看做一个无限大的flv文件,原理是服务器回复客户端请求的时候不加content-length字段。http-flv的延迟也比较小,一般在3s以内。

    相比rtmp拉流,由于是直接基于http协议,http-flv有更多的优点,它可以很好的穿越防火墙,可以支持302跳转,可以使用https的加密,移动端支持的也比较好。

  • hls
    全称为Http Living Stream,是Apple开发的协议,也是基于http协议的。它的最大特点就是直播播放器获取到的并不是一个完整的视频流。hls协议在服务端将直播数据切片封装成ts段,形成无数小的ts文件。播放器在请求播放数据的时候,首先得到一个m3u8文件,该文件内部会有一个playlist,客户端按照顺序依次请求并播放ts文件数据。它的特点导致了实时性比较差,播放延迟很大,这个延迟是由切片长度决定的,一般大于10s。另外,hls也是基于http协议的,所以穿透性比较好,不容易被墙。

三种协议区别:

协议 rtmp http-flv hls
传输 tcp http http
视频格式 flv flv ts
延时
数据分析 连续 连续 切片数据
h5播放 不支持 不支持 支持

使用场景:

  1. rtmp和http-flv适用于低延时的直播和点播平台
  2. hls适用于混合式应用,比如原生手机系统以及HTML5应用

总结:

通常,推流端会选用rtmp协议,客户端会选择http-flv来拉流,而h5则会选择hls协议进行拉流。

猜你喜欢

转载自blog.csdn.net/ljx1400052550/article/details/109248502