Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
ISO/IEC 29341-4-14定义了AVTransport服务,这是UPnP AV架构的核心组件,提供跨网络的音频和视频播放标准化控制。该服务规范使控制点——如媒体控制器应用和智能家居中心——能够管理媒体渲染设备的传输状态,包括智能电视、网络音箱、流媒体盒子和家庭影院系统。AVTransport服务将媒体播放的复杂性抽象为一组清晰的动作和状态变量,任何符合UPnP标准的控制点都可以使用。
该服务围绕一个定义良好的状态机运行,状态包括STOPPED(停止)、PLAYING(播放中)、PAUSED(暂停)、TRANSITIONING(转换中)和NO_MEDIA_PRESENT(无媒体)。每个状态转换由特定的动作控制,并通过控制点通过GENA事件订阅的状态变量进行跟踪。这种架构允许多个控制点共享对当前传输状态的感知,实现同步的多房间音频和协调的家庭影院体验。
AVTransport服务定义了一套全面的动作,围绕传输控制、媒体信息和播放队列管理进行组织。传输控制动作包括Play、Pause、Stop、Seek、Next和Previous,每个都有明确的前置条件和后置条件。媒体信息动作如GetMediaInfo和GetPositionInfo允许控制点查询曲目元数据、持续时间和当前播放位置。队列管理动作如SetAVTransportURI和SetNextAVTransportURI支持播放列表风格的顺序播放。
| 动作 | 描述 | 关键参数 | 影响的状态变量 |
|---|---|---|---|
| Play | 开始或恢复播放 | Speed(速率倍率) | TransportState → PLAYING |
| Pause | 暂停当前播放 | — | TransportState → PAUSED |
| Stop | 停止播放并重置位置 | — | TransportState → STOPPED |
| Seek | 跳转到指定位置 | Unit(REL_TIME, ABS_TIME, TRACK_NR) | PositionInfo更新 |
| SetAVTransportURI | 加载新的媒体资源 | CurrentURI(URI字符串) | AVTransportURI, TransportState |
| GetPositionInfo | 查询当前播放位置 | —(返回Track、TrackURI、RelTime、AbsTime) | 只读查询 |
使用AVTransport设计多房间音频系统需要仔细的同步管理。标准提供了精确到秒级的播放进度报告的RelativeTimePosition和AbsoluteTimePosition状态变量。然而,在多个渲染器之间实现样本精确的同步需要基础标准中未完全指定的附加机制。工程师通常使用AVTransport的”Play”动作时间戳或指定一个设备作为同步主控来实现组协调,其他设备使用基于NTP的时钟对齐来匹配播放时序。
Seek动作在实现过程中值得特别关注。标准支持四种搜索模式:TRACK_NR(按曲目号导航)、ABS_TIME(从媒体开始处的绝对时间)、REL_TIME(相对时间偏移)以及用于帧级导航的DVD特定模式。对于网络流媒体场景,ABS_TIME搜索最为常见,需要渲染设备将请求的时间位置映射到流媒体协议中的相应字节偏移量。
在实现AVTransport服务时,开发者还需注意LastChange事件变量的设计。LastChange是一个XML结构化的事件变量,它通过GENA协议向所有订阅的控制点报告传输状态的变更。该变量使用事件化的XML表示方式,能够在单个事件中携带多个状态变更,减少网络通信次数。LastChange的XML结构包含了当前传输状态、播放位置、媒体时长等关键信息,控制点可以通过解析该变量实时更新用户界面。合理设计LastChange的更新频率对于平衡UI响应性和系统性能至关重要,典型的更新间隔为250到1000毫秒。