Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
ISO/IEC 29341-3-11:2011定义了ConnectionManager:3服务,这是UPnP AV组件中负责在媒体服务器和渲染器之间建立、管理和终止数据传输连接的模块。CMS充当协商代理——在任何媒体数据流动之前,控制点查询源设备和目标设备的CMS,以找到双方支持的传输协议和内容格式。一旦确定兼容的协议,CMS分配连接资源并提供数据平面所需的寻址信息。
CMS定义了四个关键功能领域:协议信息交换(GetProtocolInfo())、连接准备与释放(PrepareForConnection()和ConnectionComplete())、连接状态查询(GetCurrentConnectionInfo())和连接枚举(GetCurrentConnectionIDs())。这些动作构成了数据传输管理的完整生命周期。
ProtocolInfo状态变量是一个逗号分隔的协议信息字符串列表,每个字符串遵循格式:protocol:network:contentFormat:additionalInfo。protocol字段指定传输协议(http-get、rtsp、internal、iec61883)。network字段标识物理网络类型(*表示任意网络)。contentFormat字段使用MIME类型(video/mpeg、audio/mp3)。additionalInfo字段携带协议特定参数,如DLNA配置文件标识符。
| 协议 | 典型用例 | 内容类型 | 优势 |
|---|---|---|---|
| http-get | 点播流媒体、渐进式下载 | 任何基于文件的媒体 | 防火墙友好,利用现有HTTP基础设施 |
| rtsp | 直播流、IPTV、监控 | MPEG2-TS、RTP负载 | 实时控制,低延迟 |
| internal | 同设备播放(如HDMI输入) | 设备特定 | 零网络开销,硬件加速 |
| iec61883 | IEEE 1394 (FireWire) AV连接 | DV、MPEG2-TS | 等时传输保证带宽 |
PrepareForConnection()动作是连接建立的核心机制。它接受RemoteProtocolInfo(远程设备的协议信息)、PeerConnectionManager(远程CMS的URL)和PeerConnectionID(远程连接标识符)。它返回ConnectionID和AVTransportID(以及可选的RcsID)。标准要求在不需连接时显式调用ConnectionComplete()释放连接。
PrepareForConnection()后必须调用ConnectionComplete()。否则会耗尽CMS连接表。在内存有限的嵌入式系统中,实现一个看门狗定时器,在可配置的超时时间后自动释放孤立连接(建议:30分钟无活动)。实现稳健的CMS需要仔细处理并发问题。多个控制点可能同时调用PrepareForConnection(),CMS必须序列化这些请求以防止同一连接槽被双重分配。建议采用读写锁模式:GetCurrentConnectionInfo()使用共享读取锁,PrepareForConnection()和ConnectionComplete()使用独占写入锁。
SourceProtocolInfo和SinkProtocolInfo状态变量应在设备初始化时通过枚举所有可用的编解码器和传输处理器来填充。为增加可扩展性,考虑使用插件架构,允许第三方协议处理器在运行时向CMS注册,动态更新这些状态变量。
ProtocolInfo格式,包含空格或不正确的分隔符。在解析ProtocolInfo字符串时,使用一个鲁棒的标记化器,能够去除空白并同时接受逗号和分号作为分隔符。优雅地拒绝格式错误的条目,而不是让整个协商失败。ConnectionComplete(),然后重新发起PrepareForConnection()。internal协议是设备特定的,用于源和目标位于同一物理设备上的场景(例如HDMI输入馈送到内部显示器)。其格式和行为由实现定义。