使用 Java 库 Cling,我可以使用 upnp 在 LAN 上发现我的电视。电视宣传以下 upnp 服务
- 渲染控制
- AV运输
- 连接管理器
它还说,它是“MediaRenderer”类型,型号描述是“Samsung TV DMR”。
据我了解,所有这些功能也可以由例如计算机提供。但在“现实”世界中,电视和电脑是两种不同的东西(尽管它们可能提供相同的服务)。
通过哪种 upnp 方法,我可以唯一地识别我正在与“电视”通话?
使用 Java 库 Cling,我可以使用 upnp 在 LAN 上发现我的电视。电视宣传以下 upnp 服务
它还说,它是“MediaRenderer”类型,型号描述是“Samsung TV DMR”。
据我了解,所有这些功能也可以由例如计算机提供。但在“现实”世界中,电视和电脑是两种不同的东西(尽管它们可能提供相同的服务)。
通过哪种 upnp 方法,我可以唯一地识别我正在与“电视”通话?
最好深入了解服务描述文件 (SCPD)。
在 StateVariables of 中RenderingControl
,TV 通常有Contrast
和Brightness
,但 PC DLNA 设备通常没有。
使用服务,我们可以获得支持GetProtocolInfo
的ConnectionManager
媒体格式列表,可用于将电视与其他音频设备区分开来。
对于“可移植性”,我能想出的唯一解决方案是根据设备的唯一 ID (UUID) 制作设备白名单。如果您打算实现一个控制器来监听某个特定设备的外观,则获取该设备的 UUID 并使用它配置控制器。如果您的控制器将具有 UI,请显示找到的所有设备并询问用户“这是电视吗?”。我敢说,在 UPnP 中没有确定性的方式可以说特定的 UPnP 设备“是电视”。UPnP 根本没有指定这样的设备类。您的服务观察是绝对正确的,您不仅可以从计算机上得到相同的响应,还可以从 DVD 播放器或智能闹钟中获得相同的响应。