其他文章

upnp和ssdp 之一

libupnp

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

1、SampleUtil_PrintEvent()

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

2、修改代码

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

rc = TvCtrlPointStart(linux_print, NULL, 0);

这句代码是整个入口,需要关注,一步一步调试进去,就明白upnp协议了,其他基础请看我的其他文章。

上图是修改过后打印搜索到的设备,本图是搜索到了kodi设备


上图是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<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:SetAVTransportURI xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID><CurrentURI>http://127.0.0.1:8000/a.mp4</CurrentURI><CurrentURIMetaData></CurrentURIMetaData>
</u:SetAVTransportURI></s:Body>
</s:Envelope>

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<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:Play xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID><Speed>1</Speed></u:Play></s:Body></s:Envelope>

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

upnp协议和dlna源码理解与修改相关推荐

  1. pppoe协议和pppd源码分析

    原文链接:http://blog.chinaunix.net/uid-26675482-id-4133784.html pppoe协议简介 (一)发现(Discovery)阶段 在发现(Discove ...

  2. 从hotspot底层对象结构理解锁膨胀升级过程||深入jdk源码理解longadder的分段cas优化机制——分段CAS优化

    深入jdk源码理解longadder的分段cas优化机制 longadder

  3. faster rcnn源码理解(二)之AnchorTargetLayer(网络中的rpn_data)

    转载自:faster rcnn源码理解(二)之AnchorTargetLayer(网络中的rpn_data) - 野孩子的专栏 - 博客频道 - CSDN.NET http://blog.csdn.n ...

  4. faster rcnn的源码理解(一)SmoothL1LossLayer论文与代码的结合理解

    转载自:faster rcnn的源码理解(一)SmoothL1LossLayer论文与代码的结合理解 - 野孩子的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/u ...

  5. TLD(Tracking-Learning-Detection)学习与源码理解之(六)

    TLD(Tracking-Learning-Detection)学习与源码理解之(六) zouxy09@qq.com http://blog.csdn.net/zouxy09 下面是自己在看论文和这些 ...

  6. TLD(Tracking-Learning-Detection)学习与源码理解之(五)

    TLD(Tracking-Learning-Detection)学习与源码理解之(五)   zouxy09@qq.com http://blog.csdn.net/zouxy09 下面是自己在看论文和 ...

  7. TLD(Tracking-Learning-Detection)学习与源码理解之(四)

    TLD(Tracking-Learning-Detection)学习与源码理解之(四) zouxy09@qq.com http://blog.csdn.net/zouxy09 下面是自己在看论文和这些 ...

  8. TLD(Tracking-Learning-Detection)学习与源码理解之(三)

    TLD(Tracking-Learning-Detection)学习与源码理解之(三) zouxy09@qq.com http://blog.csdn.net/zouxy09 下面是自己在看论文和这些 ...

  9. TLD(Tracking-Learning-Detection)学习与源码理解之(二)

    TLD(Tracking-Learning-Detection)学习与源码理解之(二) zouxy09@qq.com http://blog.csdn.net/zouxy09 OpenTLD下载与编译 ...

最新文章

  1. 2017-10-6Linux基础知识(4)安装Linux及设置语言环境
  2. java 静态内部类 弱引用_Java基础 强引用、弱引用、软引用、虚引用
  3. android get请求最长字符串,android – Retrofit @GET – 如何显示请求字符串?
  4. 窗体皮肤ssk 跟背景图片冲突_夫西地酸+阿达帕林~我要好皮肤
  5. php中url问题,PHP中URL域的解析
  6. 什么叫做“假学习”?什么叫做“真学习”?
  7. spring的controller是单例模式,但是是多线程,各个线程之间不影响
  8. sql数据库简单增删改查
  9. SQL-SERVER触发器
  10. Android 四大组件学习之BroadcastReceiver二
  11. NTKO控件的一些基本方法属性
  12. 河南省第六届ACM程序设计大赛(共7道,目前只做了三道。待续)
  13. 新猿木子李:0基础学python培训教程 Python操作Redis之集合类型
  14. Linux的iio数据流程,Linux 工业输入输出IIO子系统框架.doc
  15. python 爬虫 表格,python爬虫爬取网页表格数据
  16. 十年寻伯乐,只为指路人
  17. 微星GE62 NVIDIA960m 双系统ubuntu16.04 配置caffe-ssd
  18. 分享使用全自动引流脚本之前须知的五大要点
  19. QSL match_phrase 嵌套查询
  20. exper表达式_4

热门文章

  1. linux5 多用户模式,centos7设置以多用户模式启动
  2. win2003下APACHE2.050+PHP5+MYSQL4.0.20+PHPMYADMIN2.57 的简易安装配置
  3. 什么是 Caché?
  4. 华为支付强势杀入,微信、支付宝迎来新对手!
  5. 太方便 微信能精准搜图片了!网友:出点有用的功能有多难?
  6. 爆料称配备更大屏幕尺寸的Apple Silicon版iMac仍在研发中
  7. 舒服了!淘宝、支付宝等阿里系App取消开屏广告:秒开
  8. 39岁程序员住进养老院,早6晚9的作息,网友羡慕哭了
  9. 刘海、水滴、挖孔都靠边!中兴吐槽:不配全面屏
  10. 心心念特斯拉Cybertruck?现在可以下单了,订金1000块