DLNA&UPnP开发笔记(4)— PlatinumKit库介绍

简介:

1. PlatinumKit库的官方网站


http://www.plutinosoft.com/platinum/


2. PlatinumKit库的特点


(1)由C++编写

(2)支持Windows, Mac OSX, Linux, iPhone, Android

(3)代码非常漂亮,属于自注释型,结合UPnP协议文档很容易看懂

(4)示例比较丰富,实现了多种UPnP的Device示例,包括:MediaRenderer,MediaServer,Media Control Point,Light Control 等等。


3. PlatinumKit库的主要接口


(1) PLT_UPnP


这是PlatinumKit库最重要的一个接口,该类用来维护一个或者多个UPnP的设备(Device)或者控制点(Control Point),主要接口如下:


1
2
3
4
5
6
NPT_Result AddDevice(PLT_DeviceHostReference& device);
NPT_Result AddCtrlPoint(PLT_CtrlPointReference& ctrlpoint);
NPT_Result RemoveDevice(PLT_DeviceHostReference& device);
NPT_Result RemoveCtrlPoint(PLT_CtrlPointReference& ctrlpoint);
NPT_Result Start();
NPT_Result Stop();


(2) PLT_DeviceHost


该类代表着UPnP的设备(Device),封装了UPnP的设备所包含的各种属性和动作,属性比如:设备描述、UUID等等,动作包括:广播设备信息和服务信息,反馈设备事件消息等等。


所有的自定义UPnP设备均需要继承PLT_DeviceHost类,并根据协议实现特定的方法。


(3) PLT_CtrlPoint


该类代表着UPnP的控制点(Control Point),封装了UPnP的控制点所包含的各种动作,例如搜索UPnP设备,执行设备提供的服务(Service),订阅设备事件消息等等。


该类通过PLT_CtrlPointListener类来提供的设备添加/删除/事件等消息:


1
2
3
4
5
6
7
8
9
10
class  PLT_CtrlPointListener
{
public :
     virtual  ~PLT_CtrlPointListener() {}
 
     virtual  NPT_Result OnDeviceAdded(PLT_DeviceDataReference& device) = 0;
     virtual  NPT_Result OnDeviceRemoved(PLT_DeviceDataReference& device) = 0;
     virtual  NPT_Result OnActionResponse(NPT_Result res, PLT_ActionReference& action,  void * userdata) = 0;
     virtual  NPT_Result OnEventNotify(PLT_Service* service, NPT_List<PLT_StateVariable*>* vars) = 0;
};


另外,PLT_CtrlPoint类还提供了如下主要的接口:


查找设备:Search,Discover,


调用服务:FindActionDesc,CreateAction,InvokeAction


订阅事件:Subscribe


(4) PLT_Service


该类代表着UPnP的服务(Service),封装了UPnP的控制点所包含的各种属性和动作,属性比如服务名称、服务类型等等,动作主要包括修改/获取状态变量、查找Action等等。


常用的函数如下:


1
2
3
4
5
PLT_StateVariable* FindStateVariable( const  char * name);
PLT_ActionDesc* FindActionDesc( const  char * name);
 
NPT_Result SetStateVariable( const  char * name,  const  char * value);
NPT_Result GetStateVariableValue( const  char * name, NPT_String& value);


4.  示例代码


PlatinumKit库有着丰富的示例代码,可以参考学习如何实现一个简单的UPnP设备,如何利用Control Point控制设备和调用设备服务。


(1) UPnP AV Device 示例


PlatinumKit库实现了2个UPnP AV设备,MediaRenderer和MediaServer,这是一份学习DLNA/UPnP AV设备的非常不错的代码,推荐仔细阅读。该代码位于:


1
PlatinumKit/Platinum/Source/Devices/


(2) Control Point 示例


PlatinumKit库实现了一个基于命令行界面的媒体控制器,名叫:MicroMediaController,这是一份学习UPnP的Control Point组件的非常不错的代码,也推荐仔细阅读。该代码位于:


1
PlatinumKit/Platinum/Source/Apps/


(3) 其他UPnP设备示例


PlatinumKit库还实现了一些其他的UPnP设备,包括:简单设备、灯控设备等等,也可以参考学习,代码位于:


1
2
PlatinumKit/Platinum/Source/Apps/
PlatinumKit/Platinum/Source/Tests/


本文转自 Jhuster 51CTO博客,原文链接:http://blog.51cto.com/ticktick/1639925,如需转载请自行联系原作者
相关文章
|
Unix Linux 数据安全/隐私保护
超好用!5款完全免费、支持全平台的笔记软件
好记忆不如一个烂笔头,对于这句话,我深以为然。 我觉得养成做笔记的习惯,对于工作和学习都能够提供很大的帮助。
超好用!5款完全免费、支持全平台的笔记软件
|
10天前
|
Web App开发 iOS开发
Motrix开源下载管理器
Motrix开源下载管理器
58 0
|
7月前
|
安全 Shell 网络安全
iOS安全攻防(一):常用的命令和工具
iOS安全攻防(一):常用的命令和工具
22 0
|
7月前
|
Windows
[笔记]windows驱动开发
[笔记]windows驱动开发
|
图形学
Rhino中文名称犀牛,是一款超强的三维建模工具Rhino 7.9安装教程(所有版本下载安装教程)
Rhino中文名称犀牛,是一款超强的三维建模工具。不过不要小瞧它,它包含了所有的NURBS建模功能,用它建模感觉非常流畅,所以大家经常用它来建模,然后导出高精度模型给其他三维软件使用。
|
Android开发 iOS开发
airserver在哪里下载?如何使用
AirSever是一种通用的镜像接收器,非常适合镜像iPhone或Android视频文件。 它可以将简单的大屏幕或投影仪变成通用的屏幕镜像接收器。 使用启用了AirSever
182 0
|
存储 iOS开发
超好用iOS管软件iMazing 2.16.6官网下载及2023新增功能
iMazing 2.16.6这是一款非常方便的 iPhone 管理工具,尤其是在升级、降级、越狱之前,做好备份是必不可少的一步,千万别偷懒。有一款用着顺手的iOS管理工具在手边,让数字生活更安心!
219 0
超好用iOS管软件iMazing 2.16.6官网下载及2023新增功能
常用的网络开发库
常用的网络开发库
135 0
|
开发工具 Android开发 git
手机编程环境初尝试-用AIDE开发Android应用
尝试用AIDE在Android手机环境中开发最简单的Android应用. Develope a simple Android app using AIDE running on Android phone.
1037 0