协议之DASH介绍

发布时间:2026/10/20 13:32:24

协议之DASH介绍 DASHDynamic Adaptive Streaming over HTTP基于 HTTP 的动态自适应码流标准标准号ISO/IEC 23009-1由 MPEG 制定2012 年正式发布。与 HLS 类似核心思想是将媒体内容切分为多个小的媒体片段segment并在清单文件MPDMedia Presentation Description中声明不同比特率/分辨率的表示Representation由客户端根据网络状况动态选择。一、DASH整体结构三层结构服务端分片存储层 → MPD 描述层 → 客户端自适应逻辑层媒体分片层原始音视频编码后切割为小段独立分片Segment常见分片时长 2~10s 分片封装格式MP4fMP4 碎片 MP4、MPEG-TS。MPD 元数据层XML 格式清单文件描述所有视频 / 音频 / 字幕轨道、分片地址、码率、分辨率、时长、加密信息客户端播放的唯一入口。客户端自适应控制层播放器解析 MPD测量下载吞吐量选择最优码率分片下载、解码渲染。示例文件MPD mediaPresentationDurationPT300S minBufferTimePT2S Period durationPT300S !-- 视频轨道组 -- AdaptationSet mimeTypevideo/mp4 codecshev1.1.6.L93.90 !-- 1080P 5M码率版本 -- Representation bandwidth5000000 width1920 height1080 frameRate25 SegmentTemplate mediavideo_$Bandwidth$_$Number$.m4s initializationvideo_$Bandwidth$_init.m4s duration4000 startNumber1/ /Representation !-- 720P 2M码率版本 -- Representation bandwidth2000000 width1280 height720 frameRate25 SegmentTemplate mediavideo_$Bandwidth$_$Number$.m4s initializationvideo_$Bandwidth$_init.m4s duration4000 startNumber1/ /Representation /AdaptationSet !-- 音频轨道组 -- AdaptationSet mimeTypeaudio/mp4 codecsmp4a.40.2 Representation bandwidth128000 SegmentTemplate mediaaudio_$Number$.m4s initializationaudio_init.m4s duration4000/ /Representation /AdaptationSet /Period /MPD二、核心介绍2.1 MPD 文件最核心MPD 是标准 XML全称 Media Presentation Description描述整个视频资源的全部信息。2.1.1MPD 顶层关键节点结构XMLMPD !-- 全局配置总时长、更新周期、分片默认时长 -- Period !-- 一段连续播放内容点播1个Period直播持续新增Period -- AdaptationSet !-- 同类型媒体轨道集合视频/音频/字幕各一套AdaptationSet -- Representation !-- 单套码率规格一种分辨率、码率、帧率 -- SegmentTemplate !-- 分片命名规则、分片时长、起始序号、初始化分片 -- /SegmentTemplate /Representation /AdaptationSet /Period /MPDMPD 根节点mediaPresentationDuration点播总时长直播无固定时长minimumUpdatePeriod直播 MPD 文件刷新间隔客户端定时重新拉取 MPD 获取新分片Period播放分段单元广告、正片会拆分为多个 Period直播持续追加新 Period。AdaptationSet适配集同一媒体类型轨道集合视频 AdaptationSet所有分辨率视频轨道音频 AdaptationSet多语言、多声道音频轨道Subtitle AdaptationSet字幕轨道 支持属性mimeType、codecs、width、height、音频声道、语言标识。Representation码率版本一套独立编码规格每个代表一个清晰度档位bandwidth码率bps自适应核心判断依据width/height分辨率frameRate帧率codecs编码标识avc1、hev1、aac 等SegmentTemplate分片模板定义分片 URL 生成规则无需在 MPD 罗列每一个分片地址大幅减小 MPD 体积initialization初始化分片 URL包含 SPS/PPS 解码器参数播放器必须先下载media分片路径模板支持占位符$Number$分片序号最常用$Bandwidth$码率$Time$分片起始时间戳duration单个分片时长单位毫秒startNumber第一个分片序号2.2 媒体分片 SegmentDASH 主流使用fMP4Fragmented MP4碎片 MP4也支持 MPEG-TS 分片。2.2.1 Init segmentftyp moov ├─ mvhd # 全局媒体头部 ├─ trak # 视频/音频轨道信息 │ ├─ tkhd │ ├─ mdia │ │ ├─ mdhd │ │ ├─ hdlr │ │ └─ minf │ │ └─ stbl │ │ ├─ stsd # 编码参数 SPS/PPS/AAC 配置核心 │ │ ├─ stts │ │ ├─ stsc │ │ ├─ stsz │ │ └─ stcoInit 仅由 MP4 基础盒子构成无媒体数据 具体的属性内容可以参考MP4格式的解析。容器格式之MP4介绍-CSDN博客Init 分片全局唯一一套 Representation 只需要下载一次。2.2.2 media segment单个 media segment示意图[ftyp][moof(元数据)][mdat(视频帧音频帧)]ftyp # 文件类型标识可选很多分片省略 moof # Fragment Movie Box 分片元数据每段分片独立 ├─ mfhd # 分片序号 └─ traf # Track Fragment 轨道分片信息 ├─ tfhd # 轨道基础配置 ├─ tfdt # 分片起始时间戳 PTS └─ trun # 本分片所有帧时长、偏移、关键帧标记 mdat # Media Data Box原始裸流H.264/H.265/AAC 二进制帧1ftpy文件类型标记识别 fMP4 碎片格式很多生成工具会省略。2moof分片元数据头自适应核心每一个 media segment 自带独立 moof不需要依赖前面任何分片这是 DASH 无缝切换码率的基础。mfhdfragment 序号对应 MPD Numbertraf/trun trun 记录本分片内每一帧PTS、帧长度、是否 I 帧。播放器可以精准跳转、快速解码。tfdt分片起始绝对时间戳用于音视频同步、直播时间轴对齐。3mdat 裸数据区二进制原始音视频压缩帧无封装头由 moof 内 trun 提供偏移、长度信息分割每一帧。2.3 两种DASH工作模式2.3.1 点播模式On-Demand DASH完整视频提前分片全部分片静态存储在 CDNMPD 文件包含完整总时长、全部分片序号范围客户端可任意拖拽跳转随机访问任意分片适合短视频、长视频点播平台。2.3.2 直播模式Live DASH / DASH-IF Live实时流持续切片服务器不断生成新分片MPD 设置minimumUpdatePeriod播放器定时重新请求 MPD 拉取最新分片地址存在播放窗口timeShiftBufferDepth仅保留最近 N 秒分片过期分片自动删除无法回看久远历史低延迟扩展LL-DASHLow Latency DASH通过分片分块推送、HTTP/2、Chunked 传输将端到端延迟降至 2~5s。
延伸阅读

更多相关文章

2026/10/16 21:41:49

如何高效使用BiliDownloader:新手快速上手指南

如何高效使用BiliDownloader:新手快速上手指南 【免费下载链接】BiliDownloader BiliDownloader是一款界面精简,操作简单且高速下载的b站下载器 项目地址: https://gitcode.com/gh_mirrors/bi/BiliDownloader BiliDownloader是一款专为B站用户打造…

2026/10/18 1:57:29

6个工业级浏览器扩展重构数字工作流

1. 这不是“装插件指南”,而是一份浏览器效率重构手册你每天在浏览器里花多少时间?我粗略算过:打开新标签页、反复粘贴链接、查词翻译、填表单、比价、截图、保存网页、切换账号、屏蔽广告……这些动作加起来,保守估计每人每天至少…

2026/10/20 13:29:01

人工势场法避障实战:从仿真到实车的参数整定与避坑指南

简介:这份资源面向无人车路径规划方向的学习者与开发者,聚焦基于人工势场法(APF)的避障路径规划实现,适合已具备一定MATLAB基础、希望理解算法落地细节的中高级读者。压缩包共4个文件,均为m脚本文件&#x…

2026/10/20 13:29:01

Webpack 实战:基于 Dev Server 搭建本地 Mock 服务

1. 本地 mock 的开发价值与方案选型1.1 为什么前端要折腾本地 mock这些年我先后参与过几个中后台项目,有一个共通的痛点非常典型:后端接口永远比前端页面晚一步。你也别指望后端能按时交付,因为需求本身就在不断调整。如果前端老老实实等接口…

2026/10/20 13:29:01

AI校服识别算法实战:从成本拆解到项目落地的完整指南

1. 校服识别要解决的根本问题,不只是一个"穿没穿"的判断前阵子接触了一类校园管理需求:在出入口自动判断学生有没有穿校服,以及有没有校外人员穿着校服混进校内。这类项目通常被叫成"AI校服识别算法",听起来好…

2026/10/20 13:29:01

LTC681X工业级AFE驱动:菊花链通信、CRC自修复与多芯片同步采样

简介:本资源为ADI公司LTC681X系列高精度电池管理芯片的官方驱动源码实现,面向嵌入式工程师、BMS系统开发者及新能源领域硬件软件协同设计人员,解决多节串联电池电压采集、寄存器配置、SPI通信与CRC校验等核心开发难题,适用于电动汽…

2026/10/20 13:29:01

从零实现轻量响应式系统:依赖收集、批量更新与数组处理实战

1. 从“rea”这个标题说起:一个极简缩写背后的完整项目拆解第一次看到“rea”这个标题的时候,我脑子里蹦出来的第一反应是——这大概率是个缩写,而且是一个被作者刻意压缩到极致的缩写。在技术社区混久了你会发现一个规律:越是名字…

2026/10/20 13:24:00

基于51单片机的霍尔自行车码表:速度、里程与超速报警实现

简介:这是一套面向电子类专业学生与单片机初学者的自行车码表设计资料,基于STC89C52单片机,整合DS1302时钟、霍尔测速、电机调速、蜂鸣器报警、按键与LCD1602显示等模块,可用于课程设计、毕业设计或电子竞赛的完整方案参考。资源包…

2026/10/19 18:06:35

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/20 1:05:37

单片机C运行时从启动到多任务:中断安全与共享资源冲突

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:05:37

GCC编译四步详解:预处理、编译、汇编、链接实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:05:37

FIW线是什么?FEP注塑线与普通氟塑料线的区别及应用指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

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

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

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