Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用Java或C语言实现UPnP AV远程控制#_C#_Java_Multimedia_Upnp_Remote Control - Fatal编程技术网

C# 用Java或C语言实现UPnP AV远程控制#

C# 用Java或C语言实现UPnP AV远程控制#,c#,java,multimedia,upnp,remote-control,C#,Java,Multimedia,Upnp,Remote Control,我需要创建某种可以与UPnP媒体服务器交互的遥控器 我已经读到UPnP AV堆栈有三种类似的应用程序:媒体服务器、媒体渲染器和控制点。起初,我认为控制点是我想要编程的,但是,在浏览了几个库的文档之后,我觉得控制点仍然想要播放服务器在设备上提供的媒体文件,控制点运行时使用外部软件(与媒体渲染器不同,它自己播放文件) 我是否正确理解了这一点,还是我完全错了 此外,我找不到任何图书馆,似乎很容易使用。这可能是因为我的技能差,但我也有一种感觉,许多图书馆的文档都相当糟糕和不完整 我不记得我遇到过的所有图

我需要创建某种可以与UPnP媒体服务器交互的遥控器

我已经读到UPnP AV堆栈有三种类似的应用程序:媒体服务器、媒体渲染器和控制点。起初,我认为控制点是我想要编程的,但是,在浏览了几个库的文档之后,我觉得控制点仍然想要播放服务器在设备上提供的媒体文件,控制点运行时使用外部软件(与媒体渲染器不同,它自己播放文件)

我是否正确理解了这一点,还是我完全错了

此外,我找不到任何图书馆,似乎很容易使用。这可能是因为我的技能差,但我也有一种感觉,许多图书馆的文档都相当糟糕和不完整

我不记得我遇到过的所有图书馆,但它们包括经常提到的名字,如Cling、Fraunhofer FOKUS和CyberLink。我在他们的网站上读了很多东西,包括一些文档,但我真的不知道如何用我想要的方式使用它们

我只需要一些东西,让我连接到服务器,索引媒体列表,这样我就可以跳转到任何曲目,并且只允许播放、停止、暂停、下一步、上一步和控制音量。但是,这些文件应该在服务器端播放

你知道Java或C有什么这样伟大的东西吗? 提前多谢。:)

起初,我以为是一个控件 重点是我要编程的, 然而,在浏览完 一些图书馆的文档,它似乎 告诉我一个控制点仍然想 在服务器上播放媒体文件 在设备上提供 控制点在上运行,使用外部 软件(与媒体渲染器不同, 播放文件本身)

为了与UPnP AV兼容,软件应用程序或硬件设备必须至少包括一个UPnP AV设备(MediaServer、ControlPoint或MediaRenderer)及其强制服务。有 提供多个设备的应用程序,因此,在实践中可能找不到逻辑分离。通常,视频播放器仅实现用于浏览服务器和下载其内容的ControlPoint服务(内容甚至可以位于另一台服务器上)

我只需要一些能让我 连接到服务器,为媒体编制索引 这样我就可以跳到任何地方 轨道和唯一给我的 播放、停止、暂停的可能性, 接下来,prev和control音量。这个 但是,应播放文件 服务器端

UPnP定义了几个必须由设备实现的服务(例如,MediaServer必须提供DirectoryService)。每个服务都有强制和可选操作(例如,可以通过
Browse
方法浏览DirectoryService)。 为了实现您想要的功能,您的服务器必须实现一个UPnP MediaServer(用于浏览其内容)和一个UPnP MediaRenderer(用于控制播放)。UPnP控制点充当一种远程控制。它用于浏览服务器并选择用于播放文件的服务器

浏览请求如下所示(ObjectID 0始终表示树的根):


0
0
0
浏览定向儿童
服务器的响应可能如下所示:

<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 >

object.item.videoItem
视频文件
无名氏
行动
小约翰·多伊。
http://10.20.30.40:12345/ExportContent?id=1
在这种情况下,服务器只有一个视频项目(通常,服务器将有多个包含多个项目的文件夹)。
res
元素包含有关资源本身的信息(资源位于何处、必须使用哪种传输协议、mime类型等)。在您的情况下,服务器甚至可以以“localhost”作为地址进行应答,从而阻止下载文件。服务器的MediaRenderer部分无论如何都应该能够访问它

我不记得我读过的所有图书馆 遇到过,但经常包括 提到的名字,比如Cling, 弗劳恩霍夫·福库斯和赛博链接


我个人建议。我用它实现了一个MediaServer,但是它也提供了足够的功能来实现一个控制点或MediaRenderer。此外,您应该获得UPnP开发工具,如或。GUPnP还为C提供了一个UPnP库。这些开发工具允许您调用和调试UPnP命令,并且在开发过程中非常方便。另一个有用的资源是来自UPnP联盟的。

非常感谢您的详细回答。我将使用foobar2000作为我的媒体服务器+渲染器,因此应该涵盖这一方面。我已经尝试过开发工具,可以用它们控制foobar的播放。为了澄清问题,这是一个大学项目,最终我应该能够使用Kinect通过手势控制媒体服务器/渲染器。我应该使用的Kinect工具只能在windows中运行,因此我认为最好也在windows中创建UPnP CP。但是,我的教授建议使用其他工具,而不是使用UPnP库。我应该用一个已经存在的遥控器来控制foobar2000,然后嗅探他们与Wireshark或其他东西交换的流量。他认为我可以简单地编写一些程序,创建和发送与我嗅探的XML文件类似的XML文件。到目前为止,我还没有完全尝试过,但我得到的所有结果都很难解释。我应该提到的是,我仍然对UPnP不太了解,我想我的教授也不太了解。所以,你会建议使用一个已经存在的库来创建堆栈,但它可能具有更高的学习曲线,还是自己写出来更好?我只需要play,pause,next,prev这样的命令。然而,正如您提到的,所有UPnP设备都必须实现多个服务,我认为w
<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 >