协议之HLS介绍

发布时间:2026/10/11 6:56:58

协议之HLS介绍 HLSHTTP Live Streaming苹果推出的基于 HTTP 的流媒体传输协议核心是把视频切分成小分片 m3u8 索引文件浏览器 / 播放器通过普通 HTTP 请求逐段下载播放无需专用流媒体端口RTMP 用 193580/443 端口通用防火墙、CDN 友好。其实就是音视频直接使用HTTP 进行传输这样天然的满足网元的传输。核心特点基于标准 HTTP穿透性强CDN 完美加速自适应码率多清晰度自动切换延迟偏高标准直播 10~30s低延迟 LL-HLS 可压到 2~5s原生支持Safari、iOS、Android、Chrome、VLC、Video.js、Flv.js封装视频 H.264/H.265音频 AAC分片容器 TS传统/fMP4LL-HLS一、两大核心技术1.1 m3u8 索引文件文本UTF-8后缀.m3u8播放器先拉取这个文件获取分片地址、时长、码率等配置。1.1.1 主索引Master m3u8多清晰度自适应包含多个不同分辨率 / 码率的子流地址播放器根据网速自动切换。 示例#EXTM3U#EXT-X-STREAM-INF:BANDWIDTH800000,RESOLUTION1280x720 720p.m3u8#EXT-X-STREAM-INF:BANDWIDTH400000,RESOLUTION960x540 540p.m3u8#EXT-X-STREAM-INF:BANDWIDTH200000,RESOLUTION640x360 360p.m3u8BANDWIDTH码率 bpsRESOLUTION分辨率1.1.2 分片索引Media m3u8存放 TS 分片列表记录每一段视频分片、单段时长、加密信息、直播序列。#EXTM3U#EXT-X-TARGETDURATION:10 // 单个分片最大时长10s#EXT-X-MEDIA-SEQUENCE:100 // 当前第一个分片序号#EXTINF:9.8, seg-100.ts#EXTINF:9.9, seg-101.ts#EXT-X-ENDLIST // 点播视频才有直播无此行关键标签#EXTINF分片实际时长秒#EXT-X-MEDIA-SEQUENCE直播滚动更新旧分片会被删除#EXT-X-KEY加密信息AES-128 加密 HLS#EXT-X-DISCONTINUITY分片编码切换标记关于m3u8文件的生成可以参考我在CNblog的博文HLSHTTP Live Streaming协议之m3u8文件生成方式 - mediastream - 博客园1.2. TS 分片文件Transport Stream传统 HLS 分片后缀.ts一般 2~10s 一段每片独立可解码不用依赖前后分片网络卡顿只卡当前片段LL-HLS 使用 fMP4碎片化 MP4分片延迟更低二、点播 HLS vs 直播 HLS2.1. VOD 点播m3u8 末尾带#EXT-X-ENDLIST所有分片固定不会新增、不会删除可完整下载整部视频2.2. Live 直播无#EXT-X-ENDLIST服务端持续追加新分片旧分片超时自动清理滑动窗口播放器循环定时重新请求 m3u8 获取最新片段天然存在缓冲延迟HLS的服务搭建可以参考我的博文基于nginx的HLS简单服务器搭建 - mediastream - 博客园三 常见工具与服务3.1推流 / 切片工具FFmpegffmpeg -i rtmp://input -c copy -hls_time 4 output.m3u8Nginx-RTMP-ModuleRTMP 转 HLS 直播SRS、MediaKit、Wowza、Nimble Streamer 流媒体服务器3.2 前端播放Video.js hls.jsChrome/PC 浏览器Safari 原生支持 m3u8无需插件Android ExoPlayer、iOS AVPlayer 原生支持3.3 下载工具ffmpeg、vlc、N_m3u8DL-REm3u8 批量下载解密
延伸阅读

更多相关文章

2026/10/10 12:53:12

Gemini3.5 营销分析教程:竞品资料、用户反馈和推广方案拆解

概要Gemini 3.5 是 Google 在 2026 年 5 月 I/O 大会上发布的新一代大语言模型,其中 Gemini 3.5 Flash 的输出速度达到其他前沿模型的 4 倍,价格砍半,在多模态理解和长文本处理上有明显优势。对于营销从业者来说,Gemini 3.5 的核心…

2026/10/9 23:40:18

Playwright自动化测试:富文本编辑器图片上传流程解析

在做内容发布类 RPA 或自动化测试时,富文本编辑器通常是最容易出问题的环节。它不像普通表单只有 input 和 textarea,很多平台会使用 iframe、CKEditor、隐藏的文件选择框和异步上传接口。本文记录一个使用 Playwright 完成富文本图片上传的实现思路。图…

2026/10/11 6:52:46

JPDA多目标跟踪航迹关联原理与Matlab仿真实现详解

简介:联合概率数据关联是多目标跟踪中经典的航迹关联算法,用于解决传感器量测与目标轨迹之间的匹配问题。这份Matlab仿真代码完整实现了联合概率数据关联算法流程,主要面向刚接触多目标跟踪、希望在代码层面理解数据关联原理的初学者和科研人…

2026/10/11 6:52:46

本地AI视频工厂实战:基于开源工具批量出片的完整流水线搭建

1. 为什么我要折腾一套本地 AI 视频工厂先交代一下背景。前阵子团队要做一批短视频素材,内容方向类似但每组又有差异化,外包报价高得肉疼,自己剪辑效率又低得感人。那段时间我几乎试遍了市面上的在线视频生成工具——排队、限速、按帧收费、关…

2026/10/11 6:52:46

快递纸盒AI质检:YOLO算法实测千图数据集

简介:本资源是面向计算机视觉算法工程师与深度学习初学者的快递包裹及包装纸盒质量检测专用数据集,聚焦YOLO系列模型(v5/v7/v8/v9)在工业质检场景中的落地应用,解决包装破损、变形、错装等典型缺陷识别问题。数据集共2…

2026/10/11 6:52:46

2026美妆双11海报AI生图工具选型与批量实操指南

离双11还有两周,美工群里最常冒出来的话就是:这个海报什么时候能出?如果你也是美妆品牌的美工、运营,或者自己开店铺的小老板,今年应该能稍微松口气——2026年的AI生图工具,已经能把双11海报从“等设计师一…

2026/10/11 6:52:46

零基础学计算机入门指南:学习路径、核心基础与避坑建议

初入计算机领域的简单宣言:写给零基础起步者的心里话与避坑指南这两年经常有朋友问我:现在才开始学计算机,是不是太晚了?没有科班背景,能不能在这个行业扎下根?说实话,我特别理解这种焦虑&#…

2026/10/11 6:47:46

Windows Server 2012 R2/2016部署LSI 530-8I RAID卡驱动实操指南

简介:本资源为530-8I SAS RAID阵列卡官方驱动程序合集,专为Windows Server 2016与Windows Server 2012 R2(均为64位)服务器环境设计,面向系统运维工程师、IT基础设施管理员及虚拟化平台部署人员,解决阵列卡…

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/11 0:02:13

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/11 0:02:13

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/11 0:02:13

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/11 0:02:13

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑