DLNA&UPnP开发笔记(2)

由第一篇文章我们大致了解了DLNA的基本概念以及与UPnP的关系,本文主要介绍一下UPnP协议的基本组件和AV架构。

1.  UPnP协议组成

UPnP协议中,定义了两个主要的组件,一个是设备(Device),一个是控制点(Control Point)。这就是为什么很多UPnP协议栈的SDK的接口代码一般都主要由Device和Control Point构成。设备是在网络中可见的对象,而控制点在网络中不可见。

一个UPnP的设备(Device)是不能直接访问和控制另一个UPnP的设备(Device)的,对设备的访问和控制都必须通过控制点(Control Point)来代为完成。而控制点对设备的控制则主要是由设备定义的“服务”(Service)来实现。

设备(Device)需要向网络中广播自己的信息,并提供设备描述和服务(Service)描述,并发送设备事件消息.

控制点(Control Point)则是搜索设备,并使用其提供的服务(Service)访问和控制设备,同时监听设备事件消息。

2. 典型的UPnP AV应用架构

如图所示是一种典型的UPnP AV应用架构,它来自《UPnP-av-AVArchitecture》。在一个典型的UPnP应用中,有三个主体,一个服务器(MediaServer),一个播放器(MediaRender),以及一个控制点(Control Point)

服务器(MediaServer)主要负责提供多媒体文件的浏览和控制。

播放器(MediaRender)主要负责提供播放和渲染。

控制点(Control Point)则控制整个播放过程。

它们三个在物理上可以是同一个设备,当然,也可以在不同的设备上。

对应到UPnP协议组件的话,“MediaServer”和“MediaRnederer”都属于UPnP的Device。

“ContentDirectory”、“ConnectionManager”、“AVTransport”、“RenderingControl”这些都属于UPnP设备所提供的服务(Service),通过这些服务描述,Control Point就知道该如何访问和控制设备了。

3.  UPnP的设备描述和服务描述

UPnP的设备(Device)是通过广播包来通知局域网中的控制点自己的设备信息和服务的,而这些设备信息和服务都必须根据UPnP协议规定的XML文档格式来编写,UPnP提供了标准的模板可以参考,具体的文档地址:

http://upnp.org/sdcps-and-certification/standards/sdcps/

由这些文档我们可以看到,UPnP官网为我们定义了12种设备,在每种设备的文档中详细地定义了设备描述XML如何编写,定义了每种设备需要实现哪些服务,每种服务的XML文档如何编写。

到这里,我们其实可以看到,实现一个上述的UPnP AV应用也并没有那么可怕,一切都是有章可循的,我们需要做的就是熟读协议所定义了一系列文档。

4.  UPnP的工作原理

关于UPnP协议的工作原理,网上有许多文章介绍得很详细,例如:

《UPnP协议编程实践》

http://www.ibm.com/developerworks/cn/linux/other/UPnP/part1/

http://www.ibm.com/developerworks/cn/linux/other/UPnP/part2/

个人比较推荐直接阅读协议的官方文档,讲的非常详细:

《UPnP-arch-DeviceArchitecture-v2.0》

《UPnP-av-AVArchitecture》

5. 小结

关于UPnP协议的基本组成和AV架构就介绍到这里了,后续文章将会进一步介绍如何针对UPnP协议开发应用,有任何疑问欢迎留言或者来信[email protected]交流。

DLNA&UPnP开发笔记(2)

时间: 2024-10-23 02:48:38

DLNA&UPnP开发笔记(2)的相关文章

DLNA&UPnP开发笔记(1)

DLNA&UPnP协议为多媒体内容共享提供了标准的行业规范,随着移动互联网的火热发展,我相信它在智能家居领域一定会有着非常大的发展.我准备写几篇文章,分享一下最近在DLNA&UPnP协议开发方面的经验,DLNA&UPnP的文档特别多,在此我希望用自己的语言来引导大家快速理解DLNA&UPnP协议. (1)DLNA&UPnP协议是干什么的 简单来说,DLNA协议定义了一种通用的行业规范,目的是让电子设备之间可以方便地共享照片.视频.音乐等多媒体内容.(这篇文章讲得不错

DLNA&UPnP开发笔记(3)

由前两篇文章我们了解了DLNA和UPnP协议的基础概念,本文主要介绍一下开发DLNA&UPnP应用的SDK和代码资源. 1.  搭建测试环境 由第二篇文章中,UPnP AV典型应用架构中,我们知道,要实现一个完整的应用,需要三个主体,一个是MediaServer,一个是MediaRenderer,还有一个是Control Point,我们不一定要一次性都实现,我们可以实现一个,然后利用现有的DLNA应用来测试我们的功能是否完备. (1)MediaServer 推荐:BubbleUPnP,魔力视频

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

前面几篇文章主要从理论上介绍了DLNA和UPnP协议的相关概念和知识点,本文主要介绍一下PlatinumKit库,该库实现了UPnP协议栈,代码写得非常漂亮,但文档不多,所以希望我的介绍和引导能够帮助初学者更快速地掌握该库的应用. 1. PlatinumKit库的官方网站 http://www.plutinosoft.com/platinum/ 2. PlatinumKit库的特点 (1)由C++编写 (2)支持Windows, Mac OSX, Linux, iPhone, Android (

[Openwrt 项目开发笔记]:Openwrt平台搭建(一)

最近开始着手进行Openwrt平台的物联网网关设计,思路有些乱,通过笔记的方式进行记录和整理. 声明: 在本文中,有些内容摘自网上,我进行了整合,因此出处不明,在此对原文作者致歉! -----------------------------------------------------(分割线)------------------------------------------------------- 一. 选择Openwrt平台的理由 传统的路由器固件是由官方提供的.这些固件是不开源的,而

张高兴的 Windows 10 IoT 开发笔记:RTC 时钟模块 DS3231

原文:张高兴的 Windows 10 IoT 开发笔记:RTC 时钟模块 DS3231 GitHub:https://github.com/ZhangGaoxing/windows-iot-demo/tree/master/DS3231 注意:不包含闹钟设置

Android开发笔记(一百零三)地图与定位SDK

集成地图SDK 国内常用的地图SDK就是百度和高德了,二者的用法大同小异,可按照官网上的开发指南一步步来.下面是我在集成地图SDK时遇到的问题说明: 1.点击基本地图功能选项,不能打开地图,弹出"key验证出错!请在AndroidManifest.xml文件中检查key设置的"的红色字提示.查看日志提示"galaxy lib host missing meta-data,make sure you know the right way to integrate galaxy&

微信订阅号开发笔记(二)

微信开发的流程其实很简单 o(∩_∩)o 哈哈!在微信网站的编辑操作 额,就不说了.虽然有人问过.下面是我的微信开发过程,简单记录下. 成为开发者 材料:1.自己的服务器资源,百度的BAE,新浪的SAE都不错. 2.懂那么点编程语言. 3.注册微信公众号. 上面的都有了之后,就可以自己动手开发了.哇咔咔,好兴奋.有木有. 在登录进去之后,怎么成为开发者?不知道,自己看去. 开始coding吧. 1.验证 if (! empty ( $_GET ['echostr'] ) && ! empt

微信订阅号开发笔记(三)

1.接收语音识别结果 if($msgType=="voice"){ //收到语音消息 //MediaId 语音消息媒体id,可以调用多媒体文件下载接口拉取数据. //Format 语音格式,如amr,speex等 $format = $postObj->Format; $mediaId = $postObj->MediaId; //开通语音识别功能,用户每次发送语音给公众号时,微信会在推送的语音消息XML数据包中,增加一个Recongnition字段. //注:由于客户端缓

微信订阅号开发笔记(四)

1.创建菜单 //创建菜单 public function createMenu(){ $url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token="; $url.=$this->getacctoken(); //目前自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单.一级菜单最多4个汉字, //二级菜单最多7个汉字,多出来的部分将会以"..."代替.请注意,创建自定义菜单