UPnP 和 DLNA 音乐串流:完全指南
关于使用 UPnP/DLNA 在家庭网络上串流音乐你需要知道的一切——从基本设置到高级多房间播放。
什么是 UPnP 和 DLNA?
UPnP 代表 Universal Plug and Play(通用即插即用)——一组网络协议,让设备在本地网络上无需手动配置即可发现彼此并通信。DLNA(Digital Living Network Alliance,数字生活网络联盟)是构建在 UPnP 之上的行业标准,专门定义媒体设备应如何互操作:手机如何向音箱串流音乐、电视如何在 NAS 上查找视频、接收器如何发现服务器支持哪些格式。
当人们说”DLNA 串流”或”UPnP 串流”时,他们说的是同一件事。DLNA 提供指南;UPnP 提供底层管道。
系统以三个角色工作:
媒体服务器——存储和提供你的音乐文件。这可以是 NAS 驱动器、运行 Plex 或 Jellyfin 的计算机,甚至是充当服务器的手机。服务器宣传其内容目录并在请求时提供音频文件。
媒体渲染器——实际播放音频的设备。你的网络接收器、无线音箱、Chromecast 或智能电视。渲染器接收音频文件的 URL,通过网络获取它,解码并输出声音。
控制点——遥控器。你的手机或平板应用告诉渲染器播放什么、管理队列并显示播放状态。控制点本身不接触音频数据——它只是在服务器和渲染器之间协调。
关键洞察:音频直接从服务器流向渲染器。控制点只发送命令。你可以开始一首歌,把手机放进口袋,音乐继续播放——渲染器独立地从服务器拉取音频。
当你的手机同时充当服务器(将本地音乐库串流到网络音箱)时,它扮演两个角色:通过本地 HTTP 服务器提供音频文件,同时向渲染器发送控制命令。
UPnP vs AirPlay vs Chromecast
三大协议在家庭无线音频串流中竞争。各有权衡。
| UPnP/DLNA | AirPlay 2 | Chromecast | |
|---|---|---|---|
| 生态系统 | 厂商中立、开放标准 | 仅 Apple | 仅 Google |
| 设备支持 | 最广泛——数十个品牌的接收器、电视、NAS、音箱 | Apple 设备,AirPlay 授权音箱 | Chromecast 设备,Cast 兼容音箱 |
| 音频格式支持 | 取决于设备——每个渲染器报告其支持的格式 | ALAC、AAC,限于 Apple 生态系统格式 | MP3、FLAC、WAV、OGG、AAC、Opus |
| 最高品质 | 高达 192 kHz / 24 位(取决于设备) | 44.1 kHz / 16 位(CD 品质) | 高达 96 kHz / 24 位 |
| 多房间 | 无原生标准(由应用协调) | 原生多房间同步 | 原生多房间同步 |
| 延迟 | 可变(取决于设备,通常 200-1000ms) | 低(~200ms,Apple 优化) | 中等(~500ms) |
| 设置 | 零配置发现(SSDP) | 零配置(Bonjour) | 需要 Google Home 设置 |
| 控制 | 任何 UPnP 控制点应用 | 仅 Apple 设备 | 任何 Cast 兼容应用 |
UPnP 最大的优势是设备兼容性——它与数十个制造商的接收器、蓝光播放器、串流器和电视兼容。没有其他方案能覆盖这个范围。
最大的劣势是不一致性。不同设备对标准的实现方式不同。格式支持各不相同,跳转可靠性各不相同,有些设备处理无缝播放,而其他设备完全忽略它。一个智能的控制点应用——一个理解每个设备的怪癖并能绕过它们的应用——会产生巨大的差别。
支持 UPnP 的常见设备
如果你有以下任何一个,你的网络上可能已经有 UPnP 功能了:
AV 接收器——Denon、Marantz、Yamaha、Pioneer 和 Onkyo 都在其联网型号中包含 UPnP/DLNA 渲染功能。这些通常是可用的最佳 UPnP 渲染器——它们支持高采样率(高达 192 kHz)、原生 FLAC 解码和可靠的传输控制。如果你有任何主要品牌的联网 AV 接收器,它几乎肯定支持 UPnP。
网络串流器——如 Bluesound Node、WiiM Pro 和 Cambridge Audio CXN 等专用设备是为网络音频打造的。它们往往有出色的 UPnP 支持,启动快速、跳转可靠、高分辨率格式处理良好。
智能电视——大多数 Samsung、LG 和 Sony 智能电视包含 DLNA 渲染功能。品质各不相同;电视通常支持基本格式(MP3、WAV),最高 48 kHz。
蓝光播放器——高端型号如 Panasonic UB9000 配有优质 DAC 和高分辨率格式支持,是出色的 UPnP 渲染器。
无线音箱——Bose SoundTouch 音箱支持 UPnP,但有限制(48 kHz 上限,不支持字节范围寻址)。Sonos 原生不支持 UPnP,但可通过第三方解决方案桥接。
NAS 设备——Synology、QNAP 等包含内置 DLNA 媒体服务器软件,让你的 NAS 无需手机介入即可向任何渲染器提供音乐。
Chromecast——通过兼容应用充当 UPnP 目标。Chromecast Audio 支持高达 96 kHz;Chromecast Video 限于 48 kHz,启动较慢。
格式挑战
在测试了数十个渲染器后,以下是我们了解到的关于什么真正有效的——它比规范建议的更混乱。不同的渲染器支持不同的音频格式、不同的采样率和不同的位深度。你的 96 kHz/24 位 FLAC 文件可能在 Denon 接收器上完美播放,需要为 Bose SoundTouch 转码为 WAV,而在较旧的智能电视上悄无声息地失败。
UPnP 包含一种设备宣传支持格式的机制——一个名为 GetProtocolInfo 的 SOAP 调用返回 MIME 类型列表。理论上,这解决了兼容性问题。实际上,并非所有设备都准确报告。有些声称支持它们无法解码的格式;其他的支持比它们宣传的更多。这是一团混乱。
常见的格式场景:
| 格式 | 大多数 AV 接收器 | Bose SoundTouch | Chromecast | 未知 DLNA |
|---|---|---|---|---|
| MP3 | 原生 | 原生 | 原生 | 原生 |
| FLAC (44.1-48 kHz) | 原生 | 原生 | 原生 | 原生 |
| FLAC (96 kHz) | 原生 | 需要转码 | 原生 | 需要转码 |
| FLAC (192 kHz) | 原生 | 需要转码 | 需要转码 | 需要转码 |
| WAV | 原生 | 原生 | 原生 | 原生 |
| OGG Vorbis | 原生 | 需要转码 | 原生 | 需要转码 |
| DSD | 需要转码 | 需要转码 | 需要转码 | 需要转码 |
“需要转码”意味着控制点应用必须解码音频并重新编码为渲染器可以处理的格式——通常是 44.1 kHz / 16 位 WAV,这是普遍支持的。这种转码在你的手机上实时进行,当渲染器拉取音频流时。
你的 UPnP 体验品质在很大程度上取决于你的控制点应用处理这种格式协商的好坏。一个简单的应用只是发送原始文件会在不兼容的设备上产生静默失败。一个智能应用理解每个设备的实际功能,可以透明地绕过问题。
Echobox 如何处理 UPnP 串流
我们构建了 Echobox 的 UPnP 引擎,因为我们厌倦了大多数控制点应用采取的”发送并祈祷”方法。Echobox 不是将所有渲染器一视同仁,而是为每个设备构建关于它实际能做什么的理解,并相应地调整行为。
设备发现
当你打开渲染器选择屏幕时,Echobox 在你的本地网络上发送 SSDP 广播,询问可用的媒体渲染器。每个设备用其身份响应——制造商、型号、友好名称和控制所需的 URL。Echobox 还在网络上将自己宣传为媒体服务器,这对某些设备(特别是 Bose SoundTouch)是必需的,它们只从通过 SSDP “发现”的服务器获取音频。
三层智能模型
大多数 UPnP 应用使用单一的设备能力真相来源:要么是设备宣传的,要么是单个硬编码配置文件。我们使用三层,按优先级合并:
第一层:宣传的能力。设备通过 UPnP 的 GetProtocolInfo 告诉我们的——它声称支持的 MIME 类型。这是来自你网络上实际设备的运行时数据。
第二层:内置家族配置文件。Echobox 包含已知设备家族的精选配置文件:Bose SoundTouch、Chromecast(Audio 和 Video 分别处理)、Denon、Marantz、Yamaha、Pioneer、Onkyo、Panasonic UB 系列、WiiM 串流器和通用 DLNA 设备。每个配置文件编码了我们通过测试获得的真实世界知识。Bose SoundTouch 音箱会悄悄忽略 48 kHz 以上的一切。没有错误,没有回退。只是……静音。我们不得不通过艰难的方式发现这一点。Chromecast Video 启动缓慢。Denon AVR 原生处理 192 kHz FLAC。配置文件包含固件版本特定的覆盖,用于行为在更新之间发生变化的情况。
第三层:学习到的观察。随着你使用设备,Echobox 跟踪什么真正有效。如果一个渲染器声称支持 96 kHz 的 FLAC 但在你尝试时悄悄失败,该失败会被记录。下一次,Echobox 直接跳到该特定设备上该特定格式和采样率的转码。这些观察随时间建立信心——少量数据点被注意到但不采取行动;一旦积累了足够多的一致观察,它们甚至可以覆盖内置配置文件。
结果是每个设备的有效配置文件结合了所有三层。格式决策使用可用的最保守信息(如果家族配置文件说最高 48 kHz 但设备宣传 96 kHz,我们信任家族配置文件,因为它基于真实世界测试)。学习到的观察可以在实际使用证明不同时进一步完善。
智能格式协商
当你向渲染器播放一首曲目时,Echobox 做出决定:发送原始文件字节还是转码。
对于像 Denon AVR 播放标准 FLAC 文件这样有能力的渲染器,答案很简单:原样发送原始文件字节。渲染器原生解码,零品质损失——Echobox 只是充当文件服务器。
对于播放 96 kHz FLAC 的 Bose SoundTouch,Echobox 自动解码 FLAC,从 96 kHz 重采样到 44.1 kHz,并即时编码为 16 位 WAV。渲染器收到它实际能播放的流。如果没有这个,你会得到静音——SoundTouch 固件简单地忽略其 48 kHz 上限以上的音频,而不报告错误。
如果原始直通尝试失败(渲染器在五秒内停止且无进展),Echobox 自动以安全回退重试:44.1 kHz / 16 位 WAV,这是最普遍兼容的格式。失败会被记录,这样同一问题在会话期间不会再次发生在该设备的该格式上。
丰富的元数据
连同音频一起,Echobox 以 DIDL-Lite XML 格式向渲染器发送完整的曲目元数据:标题、艺术家、专辑、时长和专辑封面(从你手机的本地 HTTP 服务器提供)。这就是让你的接收器显示屏或遥控应用显示正在播放什么的原因。
多房间播放
Echobox 可以将多个 UPnP 渲染器分组进行同步的多房间播放。因为 UPnP 没有原生分组标准,同步由应用协调——同时向每个渲染器发送相同的播放命令,并通过轮询监控位置。当设备之间的漂移超过可接受的阈值时,使用跳转命令进行校正,校正的积极程度根据智能配置文件按设备调整(跳转可靠的设备获得更紧的校正;跳转不稳定的设备获得更宽的容忍度)。
常见问题排查
UPnP 串流一旦设置好通常工作良好,但一些常见问题可能会让你困扰。
找不到设备
这是最常见的问题,几乎总是网络相关的。
- 防火墙阻止 SSDP。UPnP 发现使用端口 1900 上的 UDP 组播。如果你手机的防火墙(或网络级防火墙)阻止了这个,设备就无法被发现。确保你的本地网络上允许 SSDP 流量。
- 不同子网。UPnP 发现是基于广播的,不跨越子网边界。如果你的手机和渲染器在不同的 VLAN 或子网上,它们看不到彼此。这在企业级网络或访客 WiFi 网络与主网络隔离时很常见。
- WiFi 隔离已启用。某些路由器有”客户端隔离”或”AP 隔离”设置,防止无线设备之间相互通信。这必须禁用才能使 UPnP 工作。
- 5 GHz vs 2.4 GHz。某些路由器隔离不同频段之间的流量。组播可能无法在它们之间正确桥接。
播放卡顿
- 网络带宽。96 kHz/24 位 FLAC 的串流速率大约为 4-5 Mbps——在现代 WiFi 能力范围内,但拥挤的网络或弱信号可能导致不一致的缓冲。
- 转码负载。当 Echobox 即时转码时,它使用你手机的 CPU。在较旧的设备上,这偶尔会在繁重的后台工作期间导致缓冲区欠载。
- 渲染器缓冲区大小。某些渲染器有较小的内部缓冲区,对短暂的网络中断很敏感。稳定的 WiFi 连接有帮助。
不支持的格式(静默失败)
渲染器通常不会报告错误——它只是产生静音或停止。这可能是 UPnP 最令人沮丧的方面。
- 检查实际发送了什么。Echobox 的信号路径诊断显示一首曲目是作为原始直通还是转码发送的。如果设备静默失败,Echobox 记录失败并在重试时回退到转码。
- 强制转码。学习观察系统在第一次失败后自动处理持续的格式问题。
- 更新固件。渲染器格式支持有时随固件更新而改善。
无法跳转或位置显示不正确
并非所有 UPnP 渲染器都可靠地支持跳转。有些报告不准确的位置。Echobox 的设备配置文件按设备家族跟踪跳转可靠性——已知跳转不可靠的设备在多房间同步中使用更宽的容忍度,跳转相关功能对完全不能支持的设备被禁用。
有关相关话题的更多信息,请参阅我们关于 FLAC 音频的格式详情、蓝牙音频编解码器的无线限制,以及参数均衡器的声音塑形(与 UPnP 串流一起工作)指南。
关于 UPnP 的真相
UPnP 是唯一覆盖 AV 接收器、智能电视、网络串流器和数十个制造商的音箱的厂商中立串流协议。在设备范围上没有其他方案能接近它。但它也是一个每个设备对标准的实现都略有不同的协议——格式支持不同,跳转可靠性不同,出错时静默失败是常态。
三角色架构(服务器、渲染器、控制点)一旦你理解了其实是优雅的。音频直接从服务器流向渲染器,你的手机只发送命令,即使你把手机收起来音乐也继续播放。问题不在架构——而在真实世界实现的不一致性。
我们构建 Echobox 的三层智能模型正是因为我们对这种不一致性感到沮丧。结合设备宣传的内容、我们通过真实世界测试了解的设备家族知识,以及实际使用中观察到的情况,让我们在渲染器能处理时发送原始文件字节(零品质损失),在不能时透明地转码。大多数常见问题是网络相关的——防火墙阻止 SSDP、设备在不同子网上、WiFi 隔离——一旦这些排查完毕,UPnP 串流就真正可靠了。格式协商是困难的部分,而这恰恰是我们花了最多时间做对的部分。