Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
ISO/IEC 29341-3-10:2011定义了AVTransport:3服务,这是UPnP音视频架构中负责控制媒体播放的组件。如果说MediaServer负责内容发现、ConnectionManager负责传输设置,那么AVTransport服务就是执行引擎——它将用户的播放命令转化为精确的状态机转换,控制媒体流传输、定位、速度控制和渲染行为。
InstanceID代表一个独立的播放会话,支持画中画、多房间音频同步和并行录制等功能。该服务规范定义了一个完整的状态机,包含五个主要状态:STOPPED(停止)、PLAYING(播放中)、PAUSED(已暂停)、TRANSITIONING(转换中)和NO_MEDIA_PRESENT(无媒体)。每个状态转换都有明确的前提条件。例如,从PAUSED到PLAYING的转换要求CurrentTransportState等于PAUSED且CurrentTransportStatus等于OK。任何偏差都会触发相应的UPnP错误代码。
Play()动作接受一个Speed参数(正常速度为1,特技播放扩展值为0.5、2、4、8、16、32)。Stop()动作将传输重置到当前曲目的开始位置,除非AVTransportURI已被更新。Pause()在当前位置暂停播放;渲染器应保持音视频输出在暂停状态(例如显示最后一个解码帧)。
| 动作 | 输入参数 | 状态前提 | 结果状态 |
|---|---|---|---|
| Play() | InstanceID, Speed | PAUSED 或 STOPPED | PLAYING |
| Stop() | InstanceID | 任意 | STOPPED |
| Pause() | InstanceID | PLAYING | PAUSED |
| Seek() | InstanceID, Unit, Target | PLAYING 或 PAUSED | TRANSITIONING 然后 PLAYING/PAUSED |
| Next() | InstanceID | PLAYING 或 PAUSED 或 STOPPED | TRANSITIONING 然后 PLAYING |
Seek()动作支持多种定位单位,由SeekMode参数定义:ABS_TIME(绝对时间,H:MM:SS格式)、REL_TIME(相对时间偏移)、ABS_COUNT(绝对帧/字节计数)、REL_COUNT(相对计数偏移)、TRACK_NR(曲目选择)和CHANNEL_FREQ(调谐器源)。GetPositionInfo()动作返回当前播放位置、曲目时长和相对进度,以XML编码字符串形式呈现。
TRANSITIONING状态下执行Seek()动作在标准中明确是未定义的。在分发查找命令前,务必验证CurrentTransportState。一个稳健的模式是将查找命令排队,仅在状态机到达PLAYING或PAUSED时执行。AVTransport:3服务还通过Record()及相关动作支持录制功能。RecordMediumWriteStatus状态变量报告录制介质是否可写,PossibleRecordStorageMedia枚举可用的存储目标。对于多URI场景,AVTransportURI和NextAVTransportURI支持连续内容的无缝播放——这是专辑播放和视频播放列表的关键功能。
DeviceCapabilities状态变量提供支持的播放功能逗号分隔列表,包括PLAY、PAUSE、STOP、SEEK、NEXT、PREVIOUS、RECORD和RANDOM。这种内省能力允许通用控制点根据渲染器能力动态调整其用户界面。
Record()动作应仅在认证后允许。如果没有访问控制,网络上的任何UPnP控制点都可以发起未经授权的录制,可能在需要双方同意的司法管辖区违反隐私法规。InstanceID(0-65535)标识。支持画中画的渲染器可以同时管理两个实例。GetCurrentTransportActions()动作返回每个实例当前可用的动作集合。INVALID_SEEK_TARGET错误(错误码711)。TRANSITIONING状态。在此状态下,CurrentTransportState变量报告TRANSITIONING,如果格式变更失败,CurrentTransportStatus变量报告ERROR_OCCURRED。PrepareForConnection()动作创建连接,然后由AVTransport管理。每个AVTransport InstanceID链接到一个CMS ConnectionID。