流媒体网络协议 -- HLS

本文详细介绍了HLS(HTTP Live Streaming)协议的原理,包括媒体流切割、M3U8文件结构及播放列表URL生成规则。同时,探讨了HLS的优势与不足,如码率自适应、HTTP协议传输、实时性问题等。此外,还讨论了实际应用中如低延迟HLS、广告插入、码率切换策略以及直播时的常见问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


HLS介绍

HLS(HTTP Live Streaming)全称为http直播流,是一个由Apple公司提出的基于HTTP的媒体流传输协议,用来实现实时音视频流的传输。

1. 原理

服务器将码流切割成一个个小的(通常是10秒一个)可以通过HTTP下载的媒体分片(segment),并提供一个配套的媒体列表文件(M3U8文件);客户端下载媒体列表文件,并按照规范解析文件,获取每个媒体分片的地址并按顺序下载,从而实现看起来播放一个码流的效果。
这其中,HTTP是网络协议,媒体播放列表为Apple官方定义的M3U8文件,媒体文件格式为TS或fMP4。

2. HLS多媒体系统

该系统结构如下图:
在这里插入图片描述
主要由四个部分组成:

  • 媒体资料输入源
    采集音视频数据
  • 媒体编码封装服务器
    对裸流进行编码,封装,切割,使之成为连续的、时长很短的媒体文件。
  • 分发服务器
    标准的网络服务器组成,接收客户端的请求和分发资源(M3U8文件和媒体文件)
  • 客户端
    拉流播放

3. HLS的优势和不足:

  • 优势:
    1. 使用HTTP协议传输数据,不会被防火墙屏蔽掉,易于分发。
    2. 码率自适应,提高播放流畅度。
    3. 无状态协议,便于负载均衡。
    4. 浏览器支持好,无需安装插件。
  • 不足:
    实时性差,延迟高,两个原因:
    1>采用切片式的多媒体文件,因为切片需要时间编码,所以一个切片的延时不可避免。
    2>使用http短连接,需要不断的与server建立连接,且基于tcp,需要三次握手,四次挥手,交互耗时长。

媒体描述文件

M3U8文件,HLS的媒体描述文件,UTF-8编码。
可以是一个主列表(Master Playlist),也可以是一个媒体列表(Media Playlist)
如下图为列表和媒体文件的关系,共两级列表。
在这里插入图片描述

1. 主播放列表(Master Playlist)

用来表示多个不同码率码流的媒体播放列表url及相关信息。
如下:

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1280000,CODECS="avc1.640028,mp4a.40.2"
http: //example.com/low.m3u8 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2560000,CODECS="avc1.640028,mp4a.40.2"
http: //example.com/mid.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=7680000,CODECS="avc1.640028,mp4a.40.2"
http: //example.com/hi.m3u8
TAG以及形式 意义
#EXTM3U 表示该文件一个拓展的M3U8文件,必须放在第一行。
#EXT-X-STREAM-INF: 用于指定一个Variants Stream,指定一个包含多媒体信息的Media URI作为playlist
一般做M3U8的嵌套使用,它只对紧跟后面的URI有效。
attribute-list有以下参数:
· BANDWIDTH: 要求的带宽,该参数必须有,实现码率自适应的关键参数。
· PROGRAM-ID: 十进
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值