发布时间:2026/9/1 17:31:03
协议之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/9/1 4:12:10

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

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

2026/9/1 5:58:53

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

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

2026/9/1 18:53:10

3D打印履带机械臂机器人DIY全攻略:底盘控制与舵机抓取

在实际机器人爱好项目中,3D 打印的带机械臂履带式漫游车是一个非常有代表性的综合任务:它同时涉及结构设计、打印工艺、电机驱动、舵机控制、供电规划和联调排错。很多入门者会先被外观吸引,以为只要把零件打出来、接上线就能跑,真…

2026/9/1 18:53:10

燃气灶选购避坑:双气源、猛火与嵌入式安装要点解析

选购厨房电器时,燃气灶是最容易被低估的一个品类。很多人会把预算花在烟机、洗碗机、蒸烤箱上,到了燃气灶这里,只看“是不是大牌、好不好看”就下单了。等到安装师傅上门才发现气源不对、开孔尺寸不匹配、旧机没处理、补贴忘了申领&#xff0…

2026/9/1 18:53:10

告别盲目写作,用 Python 脚本自测文章 GEO 友好度

为什么你需要一个本地 GEO 自测脚本 当开发者习惯向 AI 提问而非搜索关键词时,内容的分发逻辑已经彻底改变。传统的 SEO 关注收录和排名,而生成式引擎优化(GEO)的核心在于“被引用”。很多作者花费大量时间打磨技术文章&#xff…

2026/9/1 18:53:10

基于MATLAB ODE45的轴承动力学建模与故障诊断仿真

简介:本资源是一套面向机械工程与故障诊断方向的MATLAB实践代码包,适用于高校研究生、设备运维工程师及振动分析初学者,聚焦轴承动力学建模与早期故障识别两大核心问题。包内共6个.m文件,全部为MATLAB脚本,涵盖基于ODE…

2026/9/1 18:53:10

开源5自由度机械臂RIG-Arm实战:从3D打印到具身智能的完整链路

仿真环境里,机械臂稳稳地做完了一整套抓取动作,视觉识别、轨迹规划、夹爪闭合,每一步都干净利落。等到真机落地,一上电,关节却开始咔哒咔哒地抖动,电机发烫,末端执行器像喝醉了一样找不到回家的…

2026/9/1 18:48:09

P252 MDN二极管压缩器:混音中的动态控制与饱和染色

二极管压缩器在音频插件里一直不算大众,但凡是接触过鼓组总线、人声动态和混音母带的人,都会觉得它有一种“既干净又黏”的特殊质感。P252 MDN Diode 正是这样一款软件压缩器:它把经典二极管桥电路的压缩特性搬进 DAW,用数字建模还…

2026/9/1 16:02:17

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/9/1 8:27:47

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/9/1 7:04:43

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/9/1 0:00:42

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/1 0:00:42

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/1 0:00:42

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

2026/9/1 0:00:42

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行&#xff0c;Type-C接口算是典型的“看着简单&#xff0c;做起来全坑”的东西。光引脚就24个&#xff0c;高低速信号、电源、控制线全部塞在一个小小的连接器里&#xff0c;如果PCB布局不做规划&#xff0c;打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/1 0:00:42

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/1 0:00:42

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…