Platinum播放远程的媒体,远程服务器作为媒体服务器,通过打开远程媒体url实现媒体播放。

本地媒体服务器(DMS),相当于创建一个本地的WebServer,将本地的文件夹共享出去。

基本处理流程:

初始化Upnp->启动WebWerver并注册回调->注册设备和回调->注册控制点回调。

要实现本地媒体服务器,需要实现哪些功能模块呢?

1)设备描述:相关的设备描述和服务描述,方便的WIFI网络中定位媒体服务器;

2)共享文件元信息,媒体服务器下包含哪些文件信息。元信息的获取在服务启动时同步获取;

3)实现设备回调,最重要的莫过于控制动作回调,其它的比如定阅,获取变量等暂时不用考虑。实现完控制动作回调基本上服务就可用了。而控制动作回调中最重要的就是实现浏览的功能。这样客户端就可以知道根目录下的item列表,列表下面的item的属性。这样的动作是在UPnP-av-ContentDirectory-v1-Service-20020625中所描述的:媒体服务器下面的内容目录服务,服务器描述了浏览动作应该带的参数,做出的回应。要做出对应的回应逻辑,只需要知道上述文件元信息。

4)最后是实现文件内容传输。上面在生成浏览动作的返回数据时,里面的item中包含了文件内容的url,向该url发请求时会由sdk的WebServer处理,然后产生回调。回调就是个文件IO,包含获取文件信息,打开文件,读文件,写文件,Seek,关闭文件。用户需要根据回调时传入的url找到对应的文件元信息,然后做出对应动作即可。比如在打开文件的时候,创建一个文件信息,文件信息中包含文件句柄,读位置等,然后这个文件信息作为cookie给WebServer。在读文件的时候这个Cookie还带着,于是就可以读一段数据传回去。