[英]UPnP AV Remote Control in Java or C#
我需要创建一种可以与UPnP媒体服务器交互的远程控制。
我已经读过UPnP AV堆栈有三种应用程序:媒体服务器,媒体渲染器,控制点。 起初,我认为控制点是我想要编程的,但是,在浏览了几个库的文档后,在我看来,控制点仍然想要播放服务器在设备上提供的媒体文件,控制点运行,使用外部软件(与媒体渲染器不同,它自己播放文件)。
我是否理解正确或完全错了?
此外,我找不到任何易于使用的库。 这可能是由于我的技能很差,但我也觉得许多图书馆的文档都很糟糕且不完整。
我不记得我遇到的所有图书馆,但它们包括经常提到的名字,如Cling,Fraunhofer FOKUS和CyberLink。 我在他们的网站上阅读了大部分内容,包括一些文档,并且无法真正找到我如何以我想要的方式使用它们。
我只需要一些东西让我连接到服务器,索引媒体列表,这样我就可以跳到任何轨道,只有我可以播放,停止,暂停,下一个,上一个和控制音量 。 但是文件应该在服务器端播放 。
你知道Java或C#有什么好处吗? 非常感谢提前。 :)
起初,我认为控制点是我想要编程的,但是,在浏览了几个库的文档后,在我看来,控制点仍然想要播放服务器在设备上提供的媒体文件,控制点运行,使用外部软件(与媒体渲染器不同,它自己播放文件)。
为了与UPnP AV兼容,软件应用程序或硬件设备必须包括至少一个UPnP AV设备(MediaServer,ControlPoint或MediaRenderer)及其强制服务。 存在提供若干设备的应用程序,因此,在实践中可能找不到逻辑分离。 通常,视频播放器仅实现用于浏览服务器和下载其内容的ControlPoint服务(内容甚至可以位于另一服务器上)。
我只需要一些东西让我连接到服务器,索引媒体列表,这样我就可以跳到任何轨道,只有我可以播放,停止,暂停,下一个,上一个和控制音量。 但是文件应该在服务器端播放。
UPnP定义了必须由设备实现的若干服务(例如,MediaServer必须提供DirectoryService)。 每个服务都有强制和可选的操作(例如,可以通过Browse
方法浏览DirectoryService)。 为了实现您的目标,您的服务器必须实现UPnP MediaServer(浏览其内容所需)和UPnP MediaRenderer(需要控制播放)。 UPnP ControlPoint充当一种远程控制。 它用于浏览服务器并选择用于播放文件的服务器。
浏览请求如下所示(ObjectID 0始终表示树的根):
<Browse xmlns:u =" urn:schemas-upnp-org:service:ContentDirectory:1 ">
<ObjectID>0</ObjectID>
<Filter></Filter>
<RequestedCount>0</RequestedCount>
<StartingIndex >0</StartingIndex>
<SortCriteria ></ SortCriteria>
<BrowseFlag> BrowseDirectChildren </BrowseFlag >
</u:Browse>
服务器回答的响应可能如下所示:
<DIDL-Lite>
<item id="1" parentID ="0" restricted ="1">
<upnp:class>object.item.videoItem </upnp:class>
<dc:title>Video file</dc:title>
<upnp:artist>John Doe</upnp:artist>
<upnp:genre>Action</ upnp:genre>
<upnp:director>John Doe Jr.</upnp:director>
<res protocolInfo="http-get:*:video/mpeg:*" resolution ="352x288">
http://10.20.30.40:12345/ExportContent?id=1
</res>
</item>
</DIDL-Lite >
在这种情况下,服务器只有一个视频项(通常,服务器将有几个包含许多项的文件夹)。 res
元素包含有关资源本身的信息(它所在的位置,必须使用的传输协议,mime类型,......)。 在您的情况下,服务器甚至可以使用“localhost”作为地址回答,从而阻止下载文件。 无论如何,服务器的MediaRenderer部分应该能够访问它。
我不记得我遇到的所有图书馆,但它们包括经常提到的名字,如Cling,Fraunhofer FOKUS和CyberLink。
就个人而言,我会推荐CyberLink for Java 。 我用它来实现MediaServer,但它提供了足够的实现ControlPoint或MediaRenderer。 此外,您应该获得UPnP开发人员工具,例如用于UPnP的开发人员工具(最初是英特尔UPnP工具)或用于Linux的GUPnP工具 。 GUPnP还为C提供了一个UPnP库。这些开发人员工具允许您调用和调试UPnP命令,并在开发过程中非常方便。 另一个有用的资源是来自UPnP联盟的UPnP设备描述 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.