美文网首页
投屏协议 DLNA ---UPnP

投屏协议 DLNA ---UPnP

作者: 马上就来 | 来源:发表于2019-07-22 22:58 被阅读0次

    投屏协议 DLNA ---UPnP

    投屏的应用场景
    视频投屏 AirPlay(苹果私有的协议) 无线投屏
    DLNA(安卓 由三星等制定的协议)

    DLNA最重要的部分是UPnP

    协议栈
    基于 IP ,UDP 和TCP,UDP用来发现设备 TCP来控制设备

    UpnP组件 三部分组成
    1.设备 网络实体(电视) 逻辑设备(视频 图片播放器)
    2.服务 展示服务 UpnP最小可控单元 包括一系列可控制动作和一组记录该服务目前情况的状态 服务依赖与设备
    3.控制点 如手机响电脑投屏 手机是控制点 用来获取设备描述和相关服务,发出控制设备动作 向服务获取服务

    工作流程

    1.寻址 通过DHCP 寻找局域网内的ip地址
    2.发现 SSDP协议 第一种 搜索响应 多播地址搜索设备 第二种 主动 宣告自己的存在(ssdp:alive,ssdp:byebye)

    UDP:单播(针对特定IP) 多播(一组IP即一定范围) 广播
    数据报协议
    UDP 可以发送 2的16次方 - 自身协议8字节 - IP头部 20字节 = 65507字节
    MTU(设备最大传输单元 1500) - 20 - 8
    如果UDP大于1472 会到IP层进行分片

    代码
    1.start 绑定端口 加入多播组
    多播地址是固定的
    static NSString *ssdpAddres = @"239.255.255.250";
    2.search 搜索列表

     主动搜索发送的报文格式
     M-SEARCH * HTTP/1.1
     MAN: "ssdp:discover"
     MX: 5
     HOST: 239.255.255.250:1900
     ST: upnp:rootdeviceqings  
    

    3.设备回调
    拿到设备描述的 URL 地址(请求相应的 URL 地址)
    设备标识 USN 通知消息的子类型 ssdp

    - (void)udpSocket:(GCDAsyncUdpSocket *)sock didReceiveData:(NSData *)data
          fromAddress:(NSData *)address
    withFilterContext:(nullable id)filterContext
    

    通过设备描述请求设备信息XML

    4.将搜索结果回调

    5.控制 SOAP
    控制点通过ControlURL发送控制
    请求控制通过 TCP 请求资源(AVTransport) 动作响应

    AirPlay

    DNS-SD协议 发现协议
    mDNS协议 多播协议 需要向多个设备发送 不需要向每一个设备发送 而是发送到一个特定的地址
    AVPlayer FFmpeg

    相关文章

      网友评论

          本文标题:投屏协议 DLNA ---UPnP

          本文链接:https://www.haomeiwen.com/subject/dwaglctx.html