投屏协议DLNA

目录

1. 常见投屏方案

2. 什么是DLNA

3. DLNA设备分类

4,DLNA的架构


1. 常见投屏方案

常见的投屏方案主要有以下几种:

DLNA
DLNA的全称是DIGITAL LIVING NETWORK ALLIANCE(数字生活网络联盟)。DLNA委员会已经于2017年1月5日正式解散,原因是旧的标准已经无法满足新设备的发展趋势,DLNA标准将来也不会再更新。但是DLNA协议的使用依然比较广泛,短时间内不会退出历史舞台,在某些情况下依然是最好的解决方案之一。DLNA不是技术,而是一种方案,一种大家可以遵守的规范,其各种技术和协议都是目前所应用很广泛的技术和协议(SSDP、SOAP等)。
 

AirPlay
AirPlay于DLNA类似,例如两种都是基于组播实现的设备发现,只不过DLNA基于SSDP(简单服务发现协议),而AirPlay基于mDNS(multicast DNS),甚至苹果曾经也是DLNA委员会的成员。相对DLNA,AirPlay提供了一套完善的官方标准实现,开发者只需要按照文档调用API即可,当然如果需要在第三方设备上实现AirPlay功能,需要自己实现一套与AirPlay兼容的功能,网上就有通过分析抓包实现的第三方AirPlay兼容库,包括发送端和接收端。

Miracast
以Wi-Fi Direct(和UPnP都是局域网P2P)为基础的无线显示标准,出现时间晚(2012),使用范围相对较小。支持此标准的设备可通过无线方式分享视频画面。与DLNA有较大差异的在于DLNA设备服务端(DMS,Digital Media Server)基于文件的方式提供服务,文件解码由接收端完成(DMR,Digital Media Render),因此DMR需要支持较多格式以保证兼容性;而Miracast则是由服务端完成解码并重新编码为H.264传输到接收端,接收端只需要对H.264解码即可。

2. 什么是DLNA

       DLNA全称为DIGITAL LIVING NETWORK ALLIANCE(数字生活网络联盟),旨在解决个人电脑,消费电器,移动设备在内的无线网络和有线网络的互联互通,使得数字媒体和内容服务的无限制的共享和增长成为可能,为设备厂商提供了构建互操性数字化家庭设备和平台的必要信息。

        我们的设备(PC,手机,电视等)可以通过DLNA在局域网内进行多媒体(图片以及音视频)的分享,这就是DLNA的功能,就是DLNA。有了DLNA,我们可以把音乐投送到音质更好的音响上去,可以把视频投送到屏幕更大的电视上去。

3. DLNA设备分类

DMP(Digital Media Player):数字媒体播放器。能从DMS/M-DMS上查找并获取媒体内容并播放和渲染显示。比如智能电视、家庭影院等。

DMS(Digital Media Server):数字媒体服务器。提供媒体获取、记录、存储和输出功能。同时,内容保护功能是对DMS的强制要求。DMS总是包含DMP的功能,并且肯能包含其他智能功能,包括设备/用户服务的管理;丰富的用户界面;媒体管理/收集和分发功能。DMS的例子有PC、数字机顶盒(附带联网,存储功能)和摄像机等等。

DMC(Digital Media Controller):查找DMS的内容并建立DMS与DMR之间的连接并控制媒体的播放。如遥控器。

DMR(Digital Media Renderer):通过其他设备配置后,可以播放从DMS上的内容。与DMP的区别在于DMR只有接受媒体和播放功能,而没查找有浏览媒体的功能。比如显示器、音箱等。

设备间的关系如下:

4,DLNA的架构

DLNA架构是个互联系统,因此在逻辑上它也类似OSI(Open System Interconnection,开放系统互连)七层网络模型。

DLNA架构分为如下图7个层次:

                                                   DLNA ARCHITECTURE

(1) NetWorking Connectivity 网络互联方式:包括物理连接的标准,有有线的,比如符合IEEE802.3标准的Ethernet,;有无线的 ,比如符合IEEE802.11a/g标准的WiFi。

(2) NetWorking Stack 网络协议栈:DLNA的互联传输基本上是在IPV4协议簇的基础上的。用TCP或者UDP来传都可以。这一层相当于OSI网络层。

(3)Device Discovery&Control 设备发现和控制。

         这个层次是DLNA的基础协议框架。DLNA用UPnP协议来实现设备的发现和控制。下面重点看一下UPnP。这一部分可以看一下http://upnp.org/sdcps-and-certification/standards/device-architecture-documents/里的文档。UPnP的工作过程 一文也做了详细说明。下面概括总结性地说一说。

         UPnP,英文是Universal Plug and play,翻译过来就是通用即插即用。UPnP最开始Apple和Microsoft在搞,后来Apple不做了,Microsoft还在继续做,Intel也加进来做,Sony,Moto等等也有加入。UPnP有个网站http://www.upnp.org/,我们发现DLNA的网页和UPnP的网页很像,颜色也差不多,就可以知道他们关系很好了。DNLA主要是在推UPnP。微软官方网站对UPnP的解释:通用即插即用 (UPnP) 是一种用于 PC 机和智能设备(或仪器)的常见对等网络连接的体系结构,尤其是在家庭中。UPnP 以 Internet 标准和技术(例如 TCP/IP、HTTP 和 XML)为基础,使这样的设备彼此可自动连接和协同工作,从而使网络(尤其是家庭网络)对更多的人成为可能。

 (4)Media Management媒体管理。媒体管理包括媒体的识别、管理、分发和记录(保存),UPnP AV Architecture 定义了UPnP AV设备间媒体传送以及和CP间的交互。UPnP AV也定义了两种UPnP AV设备:UPnP AV MediaServer(MS)和UPnP AV MediaRender(MR),以及他们具有的4种服务:

        a,Content Directory Service(CDS):能将可访问的媒体内容列出。

        b,Connection Manager Service(CMS):决定媒体内容可以通过何种方式由UPnP AV Media Server传送至UPnP AV MediaRender。

        c,AVTransport Service:控制媒体内容,比如播放、停止、暂停、查找等。

        d,Rendering Control Service:控制以何种方式播放内容,比如音量、静音、亮度等。

(5) Media Transport 媒体传输:这一层用HTTP(HyperText Transfer Protocol)超文本传输协议。就是平时我们上网用的媒体传输协议。HTTP用TCP可靠传输,也有混合UDP方式的HTTP。现在HTTP的最新版本是HTTP1.1。

       那如果我们用UDP会怎样?就是说我们不给server回信说我们收到编号是x的包了,server也就不给我们重发丢掉的包了,这样我们就丢包了。

       但是我们传stream的时候,比如视频流,不用存,看完就完了,这种时候就可以用UDP来传。加上局域网里面QoS本来就很高,丢包都是不太可能的。所以UDP肯定会用。局域网多播的时候也用UDP。

(6)Media Formats媒体格式。格式Formats在这里等同于编码格式Codec,平时我们说的编码格式比如Mpeg-2,AVC,x264就是视频编码格式;PCM,mp3(MPEG-2 Layer 3),aac,flac就是音频编码格式。而avi,rmvb,mkv这些是媒体封装格式,包含视频音频可能还有字幕流。比如一个常见的后缀为mkv的文件,它的视频Codec是x264,音频是aac,它的视音频编码属于Mpeg-4 Codec Family。

        我们知道不同设备对编码格式的支持能力不同,Media Formats这一部分规定了设备应该具有的格式支持能力。下面的表是DLNA支持的所有编码格式:

                                                   DLNA-proved format

Video

Audio

Images

MPEG-1

MPEG-2

H.263

MPEG-4 Part 2

MPEG-4 Part 10

WMV9

VC-1

LPCM

MPEG-1/2 L2

MPEG-1/2 L3

MPEG-4 AAC LC

MPEG-4 AAC LTP

MPEG-4 HE AAC

MPEH-4 BSAC

AC-3

ATRAC3plus

WMA

WMA Professional

AMR

AMR-WB+

G.726

JPEG

PNG

GIF

TIFF

相关推荐

  1. AirServer软件

    2024-05-02 12:18:06       48 阅读
  2. 手机到电脑

    2024-05-02 12:18:06       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-02 12:18:06       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-02 12:18:06       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-02 12:18:06       87 阅读
  4. Python语言-面向对象

    2024-05-02 12:18:06       96 阅读

热门阅读

  1. JVM

    JVM

    2024-05-02 12:18:06      33 阅读
  2. JVM对象锁的升级过程

    2024-05-02 12:18:06       35 阅读
  3. 体现记录表(wst_cash_draws)

    2024-05-02 12:18:06       28 阅读
  4. 附加功率效率 PAE 测试方法

    2024-05-02 12:18:06       30 阅读
  5. git常用命令大全

    2024-05-02 12:18:06       34 阅读
  6. 7-45 最小支撑树

    2024-05-02 12:18:06       34 阅读
  7. PyTorch与深度学习:探索人工智能的新前沿

    2024-05-02 12:18:06       37 阅读
  8. C# Windows Forms 应用程序中连接到 数据库

    2024-05-02 12:18:06       34 阅读
  9. 【c++】【贪心】机器生产

    2024-05-02 12:18:06       32 阅读