现代音乐和音频网站采用多种协议来实现高效的在线音频传输。每种协议都有其特定的应用场景、优缺点和技术特点。
HTTP渐进式下载是最基础的在线音频传输方式,客户端直接从HTTP服务器下载音频文件,边下载边播放,无需等待完整下载。
| 优点 | 缺点 |
|---|---|
| 实现简单 | 无法适应网络波动 |
| 兼容性好 | 不支持直播 |
| 无需专用服务器 | 无法快进到未下载部分 |
| 支持断点续传 | 首屏加载时间长 |
HLS (HTTP Live Streaming) 是苹果公司开发的自适应流媒体协议,将大文件分割成多个小文件片段,支持多码率自适应。
#EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:10 #EXT-X-MEDIA-SEQUENCE:0 #EXTINF:10.0, segment0.ts #EXTINF:10.0, segment1.ts #EXTINF:9.5, segment2.ts #EXT-X-ENDLIST
| 特性 | 说明 |
|---|---|
| 自适应码率 | 根据网络自动切换质量 |
| HTTPS支持 | 支持加密传输 |
| 支持DRM | 可集成FairPlay保护 |
| 低延迟HLS | LL-HLS减少到2秒延迟 |
DASH (Dynamic Adaptive Streaming over HTTP) 是国际标准组织ISO制定的开放标准,与HLS类似但更加灵活,广泛应用于YouTube、Netflix等平台。
| 特性 | DASH | HLS |
|---|---|---|
| 标准组织 | ISO/IEC | Apple |
| 索引格式 | XML (MPD) | Playlist (.m3u8) |
| DRM支持 | 通用加密 (CENC) | FairPlay |
| 浏览器支持 | MSE原生支持 | 需特殊支持 |
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011"
profiles="urn:mpeg:dash:profile:isoff-on-demand:2011"
type="static"
mediaPresentationDuration="PT4M30.000S"
minBufferTime="PT2.000S">
<Period id="main-content" start="PT0.000S">
<AdaptationSet id="audio-1" group="2"
contentType="audio"
lang="zh-CN"
mimeType="audio/mp4">
<Representation id="audio-128kbps" bandwidth="128000"
audioSamplingRate="48000" numChannels="2">
<BaseURL>audio/</BaseURL>
<SegmentList duration="4000" timescale="1000">
<Initialization sourceURL="audio-init.mp4"/>
<SegmentURL media="audio-seg1.m4s" duration="4000"/>
<SegmentURL media="audio-seg2.m4s" duration="4000"/>
</SegmentList>
</Representation>
<Representation id="audio-256kbps" bandwidth="256000"
audioSamplingRate="48000" numChannels="2">
<BaseURL>audio/</BaseURL>
<SegmentList duration="4000" timescale="1000">
<Initialization sourceURL="audio-hq-init.mp4"/>
<SegmentURL media="audio-hq-seg1.m4s" duration="4000"/>
</SegmentList>
</Representation>
</AdaptationSet>
</Period>
</MPD>
| 字段 | 说明 | 示例值 |
|---|---|---|
| profiles | 支持的DASH profile | urn:mpeg:dash:profile:isoff-on-demand:2011 |
| type | 类型:static/live | static |
| mediaPresentationDuration | 总时长 | PT4M30.000S |
| AdaptationSet | 自适应集 | contentType="audio" |
| Representation | 码率版本 | bandwidth等属性 |
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011"
profiles="urn:mpeg:dash:profile:isoff-live:2011"
type="live"
availabilityStartTime="2024-01-15T10:00:00.000Z"
minBufferTime="PT4.000S"
minUpdatePeriod="PT1.000S">
<Period id="live-stream" start="PT0.000S">
<AdaptationSet id="audio-live" group="2"
contentType="audio"
mimeType="audio/mp4">
<Representation id="live-audio" bandwidth="128000"
audioSamplingRate="48000" numChannels="2">
<BaseURL>live/</BaseURL>
<SegmentTemplate media="audio-seg-$Time$.m4s"
initialization="audio-init.mp4"
timescale="48000">
<SegmentTimeline>
<S t="0" d="96000" r="10"/>
</SegmentTimeline>
</SegmentTemplate>
</Representation>
</AdaptationSet>
</Period>
</MPD>
RTMP (Real-Time Messaging Protocol) 是Adobe开发的实时传输协议,最初用于Flash播放器,曾是直播领域的主流协议。
rtmp://[server]:[port]/[app]/[stream_name] 示例: rtmp://live.example.com:1935/live/stream_key rtmps://live.example.com:443/live/stream_key
WebRTC (Web Real-Time Communication) 是W3C制定的开放标准,支持浏览器之间进行点对点实时音视频通信,无需插件。
| 类型 | 必选 | 可选 |
|---|---|---|
| 视频 | VP8 | VP9, H.264, AV1 |
| 音频 | Opus | G.711, G.722, AAC |
Smooth Streaming是微软开发的自适应流媒体协议,基于IIS Media Services,主要在Microsoft平台使用。
| 协议 | 类型 | 延迟 | 适用场景 | 浏览器支持 |
|---|---|---|---|---|
| HTTP Progressive | 点播 | 无延迟 | 简单音频播放 | 原生支持 |
| HLS | 点播/直播 | 10-30秒 | Apple生态、视频 | 原生或hls.js |
| DASH | 点播/直播 | 10-30秒 | YouTube、Netflix | MSE原生 |
| RTMP | 直播推流 | 2-5秒 | OBS推流、直播 | 需转码 |
| WebRTC | 实时通信 | < 500ms | 视频通话、互动直播 | 原生支持 |