HLS 直播协议m3u8详解

HLS 直播协议m3u8详解一 HLS 是什么 HTTPLiveStre 缩写是 HLS 是一个由苹果公司提出的基于 HTTP 的流媒体网络传输协议 是苹果公司 QuickTimeX 和 iPhone 软件系统的一部分 它的工作原理是把整个流分成一个个小的基于 HTTP 的文件来下载 每次只下载一些 当媒体流正在播放时 客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源 允许流媒体会话适应不同的数据速率 在开

一、HLS是什么

HTTP Live Streaming(缩写是HLS)是一个由苹果公司提出的基于HTTP的流媒体网络传输协议。​是苹果公司QuickTime X和iPhone软件系统的一部分。 它的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。

在开始一个流媒体会话时,客户端会下载一个包含元数据的extended M3U (m3u8)playlist文件,用于寻找可用的媒体流。HLS只请求基本的HTTP报文,与实时传输协议(RTP)不同,HLS可以穿过任何允许HTTP数据通过的防火墙或者代理服务器。​它也很容易使用内容分发网络来传输媒体流。

  • RTMP指Adobe的RTMP(Realtime Message Protocol),广泛应用于低延时直播,也是编码器和服务器对接的实际标准协议,在PC(Flash)上有最佳观看体验和最佳稳定性。
  • HLS指Apple的HLS(Http Live Streaming),本身就是Live(直播)的,不过Vod(点播)也能支持。HLS是Apple平台的标准流媒体协议,和RTMP在PC上一样支持得天衣无缝。
    这里写图片描述

二、HLS主要的应用场景

  • 跨平台:PC主要的直播方案是RTMP,也有一些库能播放HLS,譬如jwplayer,基于osmf的hls插件也一大堆。所以实际上如果选一种协议能跨 PC/Android/IOS,那就是HLS。
  • IOS上苛刻的稳定性要求:IOS上最稳定的当然是HLS,稳定性不差于RTMP在PC-flash上的表现。
  • 友好的CDN分发方式:目前CDN对于RTMP也是基本协议,但是HLS分发的基础是HTTP,所以CDN的接入和分发会比RTMP更加完善。能在各种CDN之间切换,RTMP也能,只是可能需要对接测试。
  • 简单:HLS作为流媒体协议非常简单,apple支持得也很完善。Android对HLS的支持也会越来越完善。至于DASH/HDS,好像没有什么特别的理由,就像linux已经大行其道而且开放,其他的系统很难再广泛应用。

总之,SRS支持HLS主要是作为输出的分发协议,直播以RTMP+HLS分发,满总各种应用场景。点播以HLS为主。

三、HLS协议详解

HLS是提供一个m3u8地址,Apple的Safari浏览器直接就能打开m3u8地址,譬如:

http://demo.srs.com/live/livestream.m3u8 

Android不能直接打开,需要使用html5的video标签,然后在浏览器中打开这个页面即可,譬如:

 
   
   

HLS协议规定

  • 视频的封装格式是TS。
  • 视频的编码格式为H264,音频编码格式为MP3、AAC或者AC-3。
  • 除了TS视频文件本身,还定义了用来控制播放的m3u8文件(文本文件)。

HLS协议说明

HLS的m3u8,是一个ts的列表,也就是告诉浏览器可以播放这些ts文件,譬如:

#EXTM3U #EXT-X-VERSION:3 #EXT-X-ALLOW-CACHE:YES #EXT-X-TARGETDURATION:13 #EXT-X-MEDIA-SEQUENCE:430 #EXT-X-PLAYLIST-TYPE:VOD #EXTINF:11.800 news-430.ts #EXTINF:10.120 news-431.ts #EXT-X-DISCONTINUITY #EXTINF:11.952 news-430.ts #EXTINF:12.640 news-431.ts #EXTINF:11.160 news-432.ts #EXT-X-DISCONTINUITY #EXTINF:11.751 news-430.ts #EXTINF:2.040 news-431.ts #EXT-X-ENDLIST 
  • EXTM3U
    每个M3U文件第一行必须是这个tag,提供标示作用

  • EXT-X-VERSION
    用以标示协议版本。这里是3, 那么这里用的就是HLS协议第三个版本,此标签只能有0或1个,不写代表使用版本1

  • EXT-X-TARGETDURATION
    所有切片的最大时长,有些Apple设备这个参数不正确会无法播放。

  • EXT-X-MEDIA-SEQUENCE
    切片的开始序号。每一个切片都有唯一的序号,相邻之间序号+1。这个编号会继续增长,保证流的连续性。

  • EXTINF
    ts 切片的实际时长。duration : 媒体持续时间

#EXTINF 
  
    , 
     
  
  • EXT-X-PLAYLIST-TYPE
    类型,vod 表示点播。

  • EXT-X-ENDLIST
    文件结束符号。表示不再向播放列表文件添加媒体文件。

Apple HTTP Live Streaming 官方说明

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/202692.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午11:32
下一篇 2026年3月19日 下午11:32


相关推荐

  • JAVA jstack命令详解「建议收藏」

    JAVA jstack命令详解「建议收藏」jstack命令详解转载于:https://www.cnblogs.com/gotodsp/p/6538644.html

    2025年7月26日
    4
  • c语言 switch案例,c语言switch case语句使用例子

    c语言 switch案例,c语言switch case语句使用例子c 语言 switchcase 语句使用例子发布时间 2020 04 2311 48 53 来源 亿速云阅读 421 作者 小新这篇文章主要为大家详细介绍了 c 语言 switchcase 语句使用例子 文中示例代码介绍的非常详细 具有一定的参考价值 感兴趣的小伙伴们可以参考一下 c 语言 switchcase 语句怎么用 C 语言提供了一种用于多分支选择的 switch 语句 其一般形式为 switch 表达式 c

    2026年3月26日
    2
  • ADC的基本工作原理

    ADC的基本工作原理ADC analogtodigi 的转换过程 ADC 的基本转换原理分为四个过程 抗混叠滤波 Anti aliasing 可以理解为一个低通滤波器 采样保持电路 Sampleandhol 量化 Quantizer 编码 Coder 采样保持所谓采样就是将一个时间上连续变化的模拟量转化为时间上离散变化的模拟量 将采样结果储存起来 直到下次采样 这个过程叫作保持 量化和编码模拟信号通过 ADC 转换成数字信号的这一过程称为量化 由于量化输出的数字信号位数有限

    2026年3月17日
    2
  • Android 的singleTask和singleInstance的一点思考[通俗易懂]

    Android 的singleTask和singleInstance的一点思考[通俗易懂]目录导语一、几个概念1、概念区分2、android:taskAffinity二、详细描述下这四种启动模式三、singleTask简单分析1、实例2、验证singleTask的几个特点3、简单总结singleTask的特点四、singleInstance的简单分析1、验证singleInstance的几个特点2、简单总结singleInstance的…

    2022年6月26日
    43
  • springboot设置context_spring动态注入bean

    springboot设置context_spring动态注入bean2.0之前可以通过在配置文件中加入配置server.context-path实现。如:server.context-path=/2.0后通过在配置文件中加入配置server.servlet.context-path实现。如: server.servlet.context-path=/   …

    2025年12月12日
    5
  • unix命令大全详解-完整版_command方式:「建议收藏」

    unix命令大全详解-完整版_command方式:「建议收藏」UNIX命令大全详解-完整版command方式:任何输入都会作为编辑命令,而不会出现在屏幕上,若输入错误则有“岬”的声音;任何输入都引起立即反映insert方式:任何输入的数据都置于编辑寄存器。在command方式下输入(I,a,A等),可进入in

    2022年5月6日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号