【音视频】HLS和DASH 流媒体协议的详细介绍和实现方式

深入探讨 HLS 和 DASH 流媒体协议

1. HLS(HTTP Live Streaming)

核心技术细节

HLS(HTTP Live Streaming)是由苹果公司提出的一种基于 HTTP 协议的流媒体协议。它将视频分割成多个小片段,通过 .m3u8 文件作为索引进行管理。

文件结构
  • .m3u8 文件(索引文件):列出所有可用的视频片段及其路径,可以包含多质量级别。

  • 视频片段文件 :通常是 TS(MPEG-2 TS)fMP4(Fragmented MP4) 格式。

    示例 .m3u8 文件内容:

    m3u8 复制代码
    #EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-STREAM-INF:BANDWIDTH=800000,RESOLUTION=640x360
    360p.m3u8
    #EXT-X-STREAM-INF:BANDWIDTH=1400000,RESOLUTION=1280x720
    720p.m3u8
多质量切换
  • 播放器根据网络带宽和缓冲情况,动态选择适合的分辨率。
  • 使用 .m3u8 文件中的 #EXT-X-STREAM-INF 标签定义多种比特率。
实时直播
  • 直播流通过持续生成新的片段文件,播放器周期性地刷新 .m3u8 索引文件。

    示例:

    m3u8 复制代码
    #EXT-X-TARGETDURATION:10
    #EXT-X-MEDIA-SEQUENCE:1
延迟优化
  • 传统延迟:通过减少片段时长(如 6 秒降为 2 秒),降低延迟。
  • 低延迟 HLS(LL-HLS):引入 HTTP/2 和部分片段加载(Part Segments)实现亚秒级延迟。

实现 HLS 流

1. 使用 FFmpeg 生成 HLS 流

FFmpeg 是处理 HLS 的利器,可以轻松生成 HLS 片段和清单文件。

bash 复制代码
ffmpeg -i input.mp4 \
  -codec: copy \
  -start_number 0 \
  -hls_time 4 \
  -hls_list_size 0 \
  -f hls output.m3u8
  • -hls_time:每个片段的时长,单位为秒。
  • -hls_list_size:清单文件中包含的片段数,0 表示包含所有片段。
2. 动态生成直播 HLS 流
bash 复制代码
ffmpeg -re -i input.mp4 \
  -codec: copy \
  -f hls \
  -hls_time 2 \
  -hls_flags delete_segments+append_list \
  live.m3u8
  • -re:实时模式,按视频原始速度处理。
  • -hls_flags delete_segments:删除过期片段,适用于直播。

2. DASH(Dynamic Adaptive Streaming over HTTP)

核心技术细节

DASH 是由 MPEG 组织推出的一种自适应流媒体协议,目标是提供一个开放标准,解决 HLS 的封闭性问题,支持更多设备和平台。

文件结构
  • .mpd 文件(清单文件):定义了多质量级别的流、时间轴信息以及片段路径。

  • 片段文件:通常是 MP4 或 WebM 格式。

    示例 .mpd 文件内容:

    xml 复制代码
    <MPD type="dynamic" minBufferTime="PT1.5S" profiles="urn:mpeg:dash:profile:isoff-live:2011">
        <Period>
            <AdaptationSet mimeType="video/mp4" segmentAlignment="true">
                <Representation id="1" bandwidth="800000" width="640" height="360">
                    <SegmentTemplate media="chunk-$Number$.m4s" initialization="init.mp4" duration="2" />
                </Representation>
            </AdaptationSet>
        </Period>
    </MPD>
自适应播放
  • 清单文件定义多个 Representation(不同的分辨率和码率)。
  • 播放器根据网络带宽动态选择合适的 Representation,加载对应的片段。
实时直播
  • DASH 支持通过动态更新 .mpd 文件来处理实时直播流。
  • 可以设置时间轴更新规则,支持低延迟直播。

实现 DASH 流

1. 使用 FFmpeg 生成 DASH 流
bash 复制代码
ffmpeg -i input.mp4 \
  -map 0:v -map 0:a \
  -c:v libx264 -c:a aac \
  -f dash \
  -seg_duration 4 \
  output.mpd
  • -seg_duration:每个片段的时长。
  • 输出文件 output.mpd 和一系列视频片段。
2. 使用 MP4Box 生成 DASH 流

MP4Box 是另一种流行的工具,支持复杂的 DASH 流生成。

bash 复制代码
MP4Box -dash 4000 -frag 4000 -rap -out output.mpd input.mp4
  • -dash:片段长度,单位为毫秒。
  • -rap:确保片段从关键帧开始。

3. 播放器实现

HLS 播放器

  • iOS/macOS :使用 AVPlayer,原生支持 .m3u8 文件。

  • Web:使用 HLS.js 库在非 Safari 浏览器上支持 HLS。

    示例代码:

    javascript 复制代码
    if (Hls.isSupported()) {
        var video = document.getElementById('video');
        var hls = new Hls();
        hls.loadSource('path/to/playlist.m3u8');
        hls.attachMedia(video);
    }

DASH 播放器

  • 使用 Dash.js 播放 DASH 流。

    示例代码:

    javascript 复制代码
    var player = dashjs.MediaPlayer().create();
    player.initialize(document.querySelector("#videoPlayer"), "path/to/stream.mpd", true);

4. 延迟优化

HLS 延迟优化

  • 使用低延迟 HLS(LL-HLS)。
  • 减少 #EXT-X-TARGETDURATION,控制每个片段的持续时间。

DASH 延迟优化

  • 设置 .mpd 中的 availabilityStartTime 和时间段对齐。
  • 使用低延迟 DASH(LL-DASH)配置,减少缓冲区时间。

5. HLS 和 DASH 对比

特性 HLS DASH
提出者 苹果公司 MPEG 组织
清单文件格式 .m3u8 .mpd
片段封装格式 TS、fMP4 MP4、WebM
编码格式支持 H.264、H.265 H.264、H.265、VP9、AV1
设备支持 iOS/macOS 原生支持;Android 需库支持 跨平台,需播放器支持
实时直播延迟 一般较高(几秒到几十秒) 可优化到低延迟(甚至亚秒级)
开放性 封闭(苹果主导) 开放(国际标准)

总结

  • HLSDASH 都是现代流媒体的核心技术,提供了自适应流传输,保证了良好的用户体验。
  • HLS 适合苹果生态和广泛的设备支持,尤其是直播和点播场景。
  • DASH 作为开放标准,适用于多平台、多编码格式,尤其是需要高效流媒体的场景。
  • 选择合适的协议和工具(如 FFmpeg、MP4Box)可以大大简化流媒体内容的生成和传输。
相关推荐
Prannt18 小时前
星朗智能语音——语音合成——上传文件配音
ai·音视频·语音识别
byte轻骑兵18 小时前
【AVRCP】规范精讲[7]: 打通AVCTP互操作底层,吃透事务标签与分片规则
人工智能·音视频·avrcp·音视频控制
EasyGBS19 小时前
国标GB28181视频平台EasyGBS即将重磅新增WHIP推流功能!低延迟直播体验再升级
音视频
jiejiejiejie_20 小时前
Flutter for OpenHarmony 萌系实战合集:地图功能 + 音频播放一站式指南
flutter·音视频
jbk331121 小时前
10分钟翻译一条视频,实现语音、字幕翻译后与画面同步对齐,视频翻译助手使用教程
人工智能·音视频·剪辑软件·剪映自动化软件
带娃的IT创业者21 小时前
DaVinci Resolve – Photo:当视频调色之王,跨界“修图”,意味着什么?
图像处理·音视频·工作流·davinci resolve·后期制作·视频调色·色彩管理
nashane1 天前
HarmonyOS Video组件预览图片优化实践:告别黑屏,提升视频播放体验
华为·音视频·harmonyos·harmonyos 5
科研前沿1 天前
2026 数字孪生前沿科技:全景迭代报告 —— 镜像视界生成式孪生(Generative DT)技术白皮书
大数据·人工智能·科技·算法·音视频·空间计算
EasyDSS1 天前
私有化视频会议系统/视频高清直播点播EasyDSS一体化视频平台赋能各行业数字化高效协同
音视频
科研前沿1 天前
镜像视界浙江科技有限公司的关键技术突破有哪些?
大数据·人工智能·科技·算法·音视频·空间计算