一款macOS应用如何通过优先选择SRT而非WebRTC来实现广播级音频质量,以及为什么行业标准可能本末倒置。
架构挑战
远程DJ流媒体提出了一个有趣的流媒体工程问题:如何在不需要每个端点配备15,000美元广播编码器的情况下,保持广播级质量,同时将未压缩音频传输到多个场馆?
传统方法将视频和音频合并为单个RTMP或HLS流,依赖自适应比特率来处理网络波动,并接受分段传输带来的15至30秒延迟。DJing Stream是一款专为专业DJ到场馆流媒体设计的macOS应用程序,它采用了一种截然不同的方法,从协议架构的角度来看值得深入研究。

独立的流,独立的协议
核心架构决策是将音频和视频视为需要不同协议的根本不同的媒体类型。
| 流 | 协议 | 比特率 | 优先级 |
|---|---|---|---|
| 音频(默认) | SRT | ~2,304 kbps (PCM) | 主要 |
| 音频(高容错) | HLS | ~900-1,400 kbps (ALAC) | 主要 |
| 视频 | WebRTC | ~1,500 kbps | 次要 |
这种反转(音频比特率高于视频)在流媒体领域几乎前所未有。大多数平台为视频分配的带宽是音频的5到10倍。原因如下:在专业场馆部署中,音频质量是唯一重要的因素。酒吧的音响系统会暴露每一个压缩伪影。显示DJ的视频画面是辅助性的,在屏幕上显示固然不错,但对客户体验并非关键。
为什么音频选择SRT?
SRT(Secure Reliable Transport)提供了专业音频所必需的多项特性。值得注意的是,HLS不支持LPCM(Linear PCM)音频。它需要AAC或AC-3等编解码器进行有损传输,或使用ALAC进行无损传输。这使得HLS不适合未压缩音频,但正如下文所述,HLS ALAC现在为通过HLS进行无损流媒体传输打开了大门。
带重传的有序传输:与WebRTC的尽力而为模型不同(数据包可能被丢弃或乱序到达),SRT通过自动重传丢失的数据包来保证有序传输。对于音频来说,丢包意味着可听到的故障。SRT的ARQ机制确保在传输中丢失的任何数据都会在缓冲区耗尽之前被重新发送。
可配置的延迟/可靠性权衡:SRT公开了一个直接控制重传窗口的延迟参数。延迟越高,数据包恢复时间越多,可靠性越高。DJing Stream将此作为面向用户的滑块公开。
Latency Configuration by Use Case:
├── Live venue deployment: 4-5 seconds (maximum reliability)
├── Interactive sessions: 2-3 seconds (accept occasional dropouts)
├── Home listening: 4-6 seconds (prioritize quality)
└── Challenging networks: 8-10 seconds (international, mobile, congested)
恒定比特率:SRT不会根据网络状况调整比特率。它保持一致的质量,并依赖重传缓冲区来吸收波动。这对于音频至关重要,因为自适应比特率意味着可听到的质量波动。
为什么视频选择WebRTC?
WebRTC仍然是视频的正确选择,但原因不同。
- 实时反馈:DJ希望看到观众,场馆可能希望展示正在表演的DJ。这需要低延迟,即使以牺牲质量为代价。
- NAT穿透:WebRTC的ICE/STUN/TURN基础设施处理了NAT后面DJ与场馆之间点对点视频的复杂性。
- 可接受的质量下降:视频质量波动在视觉上是可以容忍的,而音频故障则不然。
关键洞察是:即使视频卡顿,音频仍然完美。这些流是完全独立的。可以完全关闭视频以节省资源,而不影响音频。
SRT上的未压缩PCM
大多数流媒体平台使用128至320 kbps的AAC或Opus,而DJing Stream传输24位PCM音频。
Audio Specifications:
├── Format: Uncompressed 24-bit PCM
├── Sample rate: 44.1 kHz or 48 kHz (auto-detected)
├── Bitrate: ~2,304 kbps
├── Container: MPEG-TS
└── Transport: SRT
作为参考,Spotify的最高质量使用有损压缩,比特率为320 kbps。DJing Stream以零压缩伪影提供超过七倍的比特率。代价是带宽:每个听众仅音频就消耗约2.5 Mbps。
HLS ALAC:恶劣条件下的无损音频
DJing Stream协议库中最新增加的是带ALAC(Apple Lossless Audio Codec)的HLS。虽然使用未压缩PCM的SRT仍然是音频质量的黄金标准,但HLS ALAC在不牺牲无损音频的情况下,为恶劣网络场景添加了一个具有容错能力的替代方案。
ALAC是无损编解码器:每个采样都在接收端逐位完美重建。与AAC或Opus不同,没有压缩伪影、没有频谱空洞、没有预回声。到达场馆音响系统的音频与离开DJ调音台的音频在数学上完全一致。与未压缩PCM的区别纯粹在于传输效率:ALAC实现约40%至60%的压缩率,显著降低带宽需求。
HLS ALAC Audio Specifications:
├── Format: ALAC (Apple Lossless Audio Codec)
├── Quality: Lossless (bit-perfect reconstruction)
├── Bitrate: ~900-1,400 kbps (vs ~2,304 kbps for PCM)
├── Container: fMP4 segments over HLS
└── Bandwidth savings: ~40-50% vs uncompressed PCM
主要优势是网络容错能力。HLS的分段传输引入了播放缓冲区,比SRT的实时重传模型更优雅地吸收网络抖动和临时连接中断。对于使用拥挤Wi-Fi的场馆、跨越多个ISP边界的国际流、或移动热点设置,HLS ALAC提供了一个后备方案,可以在SRT会卡顿的条件下继续播放。
代价是延迟。SRT在2至10秒内传输音频,而HLS的分段方法增加了开销,端到端通常为10至20秒。对于大多数场馆部署来说,这是完全可以接受的:观众不需要与DJ动作的亚秒级同步,他们需要的是扬声器中不间断的无损音频。
这为运营者提供了一个实用的决策矩阵。
Protocol Selection:
├── Stable network + lowest latency → SRT with uncompressed PCM
├── Tough network + lossless quality → HLS with ALAC
└── Video monitoring (any network) → WebRTC
DJ根据自己的网络条件选择最合适的音频传输方式:在低延迟重要的稳定连接中使用SRT,在可靠性优先时使用HLS ALAC。
星形拓扑分发
网络架构采用中继模型而非点对点模型。
DJ Mixer
│
▼ USB/Thunderbolt
macOS (AVFoundation capture)
│
▼ MPEG-TS/SRT
SRT Relay Server
│
├──────────────────┬──────────────────┐
▼ ▼ ▼
Venue 1 Venue 2 Venue N
(SRT Subscriber) (SRT Subscriber) (SRT Subscriber)
无论听众数量多少,DJ只发布单个流。中继服务器处理扇出分发。这使DJ的上传带宽需求保持恒定,同时实现多场馆同步传输。
每个场馆随后通过AVAudioEngine将SRT流路由到其音响系统或AirPlay端点。
Apple Silicon作为广播基础设施
Comrex或Tieline等制造商的传统广播贡献编码器每个端点的成本为3,000至15,000美元。它们能实现略低的延迟(1至2秒),但采用点对点方式运行,每个场馆连接需要单独的硬件。
DJing Stream在消费级Mac上运行。Apple Silicon的统一内存架构和硬件加速媒体处理使以前需要专用广播设备才能完成的工作成为可能。
- AVFoundation:从任何USB/Thunderbolt接口进行低延迟音频捕获
- 硬件加速编码:用于视频(启用时)
- 高效的SRT处理:用于可靠传输
一台翻新的Mac mini M1(250至300美元)即可轻松处理广播级流媒体。入门门槛从数千美元降至现有的Mac硬件。
与消费级平台的比较
为什么不直接使用Mixcloud Live、Twitch或YouTube Live?除了音频质量限制(有损压缩、自适应比特率)之外,还有流媒体工程师应该了解的许可证问题。
消费级流媒体平台是为个人收听而授权的。它们持有平台传输的公开表演许可证。然而,通过其音响系统播放该内容的场馆创建了二次公开表演,需要场馆自己的PRO许可证(ASCAP、BMI、SESAC、SACEM等)。许多在这个灰色地带运营的场馆并未意识到这一区别。
DJing Stream将自身定位为已持有适当公开表演许可证的场馆的传输基础设施,这与现场DJ或背景音乐系统所需的许可证相同。
技术规格概要
| 参数 | 值 |
|---|---|
| 音频格式(SRT) | 未压缩24位PCM |
| 音频格式(HLS) | ALAC(无损) |
| 音频采样率 | 44.1 kHz / 48 kHz(自动) |
| 音频比特率(SRT) | ~2,304 kbps |
| 音频比特率(HLS ALAC) | ~900-1,400 kbps |
| 音频传输 | SRT (MPEG-TS) 或 HLS (fMP4) |
| 视频格式 | H.264 720p |
| 视频传输 | WebRTC |
| SRT延迟 | 2至10秒(可配置) |
| HLS延迟 | 10至20秒(端到端) |
| 平台 | macOS 15+(Sequoia) |
| 架构 | 推荐Apple Silicon |
实施注意事项
对于评估类似架构的流媒体工程师,有几个设计决策值得注意。
协议独立性:将音频和视频流分离,使每种流都能在不妥协的情况下使用最优协议。架构复杂性更高,但质量方面的收益是显著的。完美的音视频同步对DJ流媒体并非必需,但实时视觉反馈是必须的。HLS等标准分段协议引入15至30秒的延迟,使视觉监控变得不可能。WebRTC解决了视频问题,而SRT处理音频质量需求。
面向用户的延迟控制:与其将延迟隐藏在"低延迟模式"开关后面,不如公开实际参数并附上使用场景指导,让运营者做出明智的权衡。
中继架构vs. P2P:星形拓扑模型增加了中继跳数,但极大地简化了多目的地传输,并保持源端带宽恒定。对于任何需要一对多分发的应用,这可能是正确的选择。
音频优先的比特率分配:对于音频质量是核心价值主张的应用,请考虑标准的视频优先带宽分配是否适合您的使用场景。
结论
DJing Stream代表了与传统流媒体架构的一次有趣背离:在音频方面优先选择SRT的可靠性而非WebRTC的速度,为音频分配比视频更多的带宽,添加HLS ALAC以在恶劣条件下实现无损容错,并利用Apple Silicon使广播级传输大众化。
无论您是在构建场馆流媒体系统、远程制作工作流,还是任何音频保真度至关重要的应用,这里介绍的架构模式(针对不同媒体类型的独立协议、面向恶劣网络的无损替代方案、可配置的延迟权衡、星形拓扑分发)都提供了值得参考的模板。
该应用程序可在Mac App Store获取。更多信息请访问djing.com。