您当前的位置: 首页 > 

qianbo_insist

暂无认证

  • 0浏览

    0关注

    399博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

upnp协议和dlna源码理解与修改

qianbo_insist 发布时间:2021-06-13 22:57:02 ,浏览量:0

其他文章

upnp和ssdp 之一

libupnp

libupnp 的例子写得不是很有条理,但是很容易修改,是很好的入门

1、SampleUtil_PrintEvent()

这个函数是打印出所有的控制点,可以注释掉,除了显示是没有用处的,重点函数是TvCtrlPointCallbackEventHandler回调 回调函数

2、修改代码

里面的例子tv_ctrlpt_main.cpp 重点关注,这是一个控制点的编写,编写dlna 投屏设备需要修改很多名称参数

rc = TvCtrlPointStart(linux_print, NULL, 0);

这句代码是整个入口,需要关注,一步一步调试进去,就明白upnp协议了,其他基础请看我的其他文章。 libupnp打印设备 上图是修改过后打印搜索到的设备,本图是搜索到了kodi设备

wireshark 抓包 上图是wireshark抓返回包,实际上udp里面包含的是http协议。 抓包使用语法 udp and host xxxx.xxxx.xxx.xxx and not host 192.168.1.255 因为广播地址有很多干扰包,所以去掉广播包

dlnap

这是python写的一个投屏,写得言简意赅,调试下来,技巧十足,作者很有功力 python dlnap.py --ip 192.168.1.144 --play http://127.0.0.1:8000/a.mp4 python dlnap.py --ip 192.168.1.144 --stop

事实上,投屏是分为两步走的 1、发送命令让大屏播放mp4文件
POST /AVTransport/cff47b40-2475-7ff1-7459-318ec45c9853/control.xml HTTP/1.1
User-Agent: dlnap.py/0.15
Accept: */*
Content-Type: text/xml; charset="utf-8"
HOST: 192.168.1.144:1551
Content-Length: 504
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI"
Connection: close


     
     
      
      0http://127.0.0.1:8000/a.mp4

   

2、播放
POST /AVTransport/cff47b40-2475-7ff1-7459-318ec45c9853/control.xml HTTP/1.1
User-Agent: dlnap.py/0.15
Accept: */*
Content-Type: text/xml; charset="utf-8"
HOST: 192.168.1.144:1551
Content-Length: 401
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Play"
Connection: close


         
            
               
                  01
               
            
         

以上理解了,除了网络的基本功力,还要有http协议的理解以及xml 解析等等,soap协议的理解,dlna 大屏投放基本就能做了。

关注
打赏
1663161521
查看更多评论
立即登录/注册

微信扫码登录

0.0353s