Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
ISO/IEC 29341-20-4 标准定义了 UPnP AV MediaServer v2 设备模板,这是一个为向 UPnP 网络提供媒体内容的设备而制定的全面规范。MediaServer 设备模板将多个 UPnP 服务——通常包括 ContentDirectory v2(29341-18-13)、ConnectionManager v2(29341-18-6)和可选的 AVTransport v2(29341-18-12)——组合成一个连贯的设备类型,能够向家庭网络上的 MediaRenderer 提供音频、视频和图像内容。
v2 MediaServer 模板通过多项重大架构改进扩展了 v1 规范:支持单个设备上的多个内容目录、跨服务器的改进内容同步、增强的搜索能力(支持联合查询)、内容书签和恢复功能,以及来自多个来源(包括嵌入标签和外部数据库)的元数据丰富。
MediaServer v2 设备模板强制包含几个核心服务,并允许通过可选服务增强功能。强制性服务包括 ContentDirectory(用于内容浏览和搜索)、ConnectionManager(用于服务器和渲染器之间的协议和内容格式协商)以及设备描述本身(提供设备的友好名称、制造商、型号信息和图标 URL)。
| 服务 | 必需/可选 | 用途 |
|---|---|---|
| ContentDirectory v2 | 必需 | 浏览、搜索和枚举媒体内容层次结构 |
| ConnectionManager v2 | 必需 | 协商协议、传输格式和内容类型 |
| AVTransport v2 | 可选 | 服务器管理的播放控制和特技播放 |
| ScheduledRecording v2 | 可选 | 安排和管理 PVR 录制 |
| ContentSync v2 | 可选 | 跨多个服务器同步内容数据库 |
MediaServer 的一个关键功能是管理内容源和渲染设备之间的连接。ConnectionManager 服务通过 GetProtocolInfo 动作支持协议和格式协商,该动作返回源(MediaServer)和接收端(MediaRenderer)支持的传输协议(HTTP GET、RTSP、RTP、MMS)和内容格式(MIME 类型)列表。v2 规范通过基于能力的过滤增强了这一点,使用 GetCurrentConnectionInfo 动作提供有关活动连接的实时信息,包括带宽利用率和 QoS 参数。
MediaServer v2 还通过 GetMediaServerCapabilities 动作支持转码能力。支持转码的服务器可以在请求的 MediaRenderer 不支持原始格式时,动态地将内容从一种格式转换为另一种格式。例如,服务器可能将 DTS-HD Master Audio 音轨转码为 Dolby Digital Plus,以适应仅支持后者的渲染器。这通过 TranscodingCapabilities 状态变量进行广告,该变量列出了支持的输入到输出格式映射。
在实现 MediaServer v2 时,最关键的工程决策是内容数据库架构。服务器必须维护所有可用内容的索引数据库,包括元数据、封面艺术引用和资源 URI。数据库必须支持高效的分层浏览(用于 Browse 动作)和全文搜索(用于 Search 动作)。基于文件系统的实现适用于小型收藏(少于 1,000 个项目),但强烈建议大型收藏使用基于数据库的实现(SQLite、嵌入式数据库)。为了优化浏览性能,建议对经常查询的属性(dc:title、upnp:class、dc:creator)建立数据库索引,并预先计算”最近添加”和”最多播放”等虚拟容器。
对于拥有大量内容库的服务器(超过 10,000 个项目),v2 规范推荐实现延迟加载元数据。服务器不应在启动时扫描所有文件(这可能需要数分钟),而应执行快速初始扫描以发现新增和移除的文件,然后在项目首次被浏览或搜索时按需加载元数据。这大大减少了启动时间和内存使用。
v2 中引入的 ContentSync 服务解决了同一家庭网络中多个 MediaServer 的挑战。它定义了”同步组”概念,服务器可以订阅彼此的内容变更并维护统一的内容数据库。同步使用基于 SystemUpdateID 值的版本向量方法,每个服务器维护自己的更新计数器并与同步组中的对等服务器交换更改日志。这使得控制点可以看到所有服务器中的内容,而无需逐个查询每个服务器。