今天开始着手分析DLNA源码,碰到了第一个棘手的问题,项目可以投屏到 Windows Media Player,却无法投屏到 BubbleUpnp播放器,通过代码跟踪,最终问题还是得到了解决。而要弄清这个问题,需要弄清下面几个知识点:

1.DMC的控制流程:当我们通过DMC将本地媒体文件投屏到 远端设备时,DMC做了如下的工作:

a.  getProtocolInfos() :
b.  getTransportInfo():
c.  setAvURL():
d.  play():

而投屏到Bubble失败是出现在第三步,也就是将本地媒体文件的相关信息转换成DIDL格式的信息发送给 远端设备时出现了问题,报错信息如下:

Error: Current state of service prevents invoking that action. java.lang.ClassCastException: com.bubblesoft.upnp.utils.didl.DIDLContainer cannot be cast to com.bubblesoft.upnp.utils.didl.DIDLItem. (HTTP response was: 500 Internal Server Error)

然后打印 setAvUrl()中发送的Soap信息,结果如下:

<?xml version="1.0" encoding="utf-8"?>
<DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" xmlns:sec="http://www.sec.co.kr/"><container id="2" parentID="0" childCount="447" restricted="1" searchable="0"><dc:title>Audios</dc:title><dc:creator>GNaP MediaServer</dc:creator><upnp:writeStatus>NOT_WRITABLE</upnp:writeStatus><upnp:class>object.container</upnp:class></container><item id="audio-item-3507" parentID="2" restricted="0"><dc:title>i11</dc:title><dc:creator>&lt;unknown&gt;</dc:creator><upnp:class>object.item.audioItem.musicTrack</upnp:class><upnp:album>sound</upnp:album><upnp:artist role="Performer">&lt;unknown&gt;</upnp:artist><res protocolInfo="http-get:*:audio/mpeg:*" size="144913" duration="0:0:5">http://192.168.31.28:8192/audio-item-3507</res></item>
</DIDL-Lite>

而上面这段DIDL信息的生成则是通过GenerateXml完成, 方法如下:

public String generate(Container content,Item item );

仔细查看GenerateXml类,发现还有一个重载的方法:

public String generate(ContentItem content);

改成这个方法后,问题解决,原来Bubble强行将 Container 转换为 ContentItem ,显然是不正确的,那 ContentItem 和 Container 究竟表示什么,两者有什么关系呢? 留待明天继续分析。。。

DLNA系列1:投屏到BubbleUpnp播放器出错的解决相关推荐

  1. 索尼投屏无法显示服务器,索尼投屏显示无法播放视频

    索尼投屏显示无法播放视频导读 索尼投屏显示无法播放视频 - 解决方法:以索尼X8500G为例,无法播放视频,可能是手机和电视没有处于同一wifi网络下,需要切换为同一网络:可能是网络连接不稳定导致,需 ...

  2. C# 视频监控系列(11):H264播放器——封装API[HikPlayM4.dll]

    前言 当你认真的写完客户端和服务器端的时候可能不需要再继续往下看关于播放器的代码和说明,因为你已经掌握了如何转换VC++代码的技巧了,加上GOOGLE再来完成这个播放器应该算小菜了.但是作为我的系列, ...

  3. C# 视频监控系列(13):H264播放器——控制播放和截图

    C# 视频监控系列(13):H264播放器--控制播放和截图 前言 本该把这部分和上一篇合成一篇的,无奈挣扎半天,还是想对称起来,客户端3篇.服务器端3篇--所有播放器也勉强凑3篇吧(封装API的文章 ...

  4. 视频云:点播播放器和直播播放器冲突如何解决?

    1.问题 开发者有点播和直播都需要用,既有播放网络视频的需求也有直播播放视频流的需求,这个时候如果用户先集成了点播播放器再去集成直播播放器的时候会出现冲突报错. 2.解决方案 开发者仅仅使用直播播放器 ...

  5. 校园网b站播放器报错解决

    校园网b站播放器报错解决 解决方法:控制面板-网络和共享中心-点击右侧校园网WLAN(校园网)-属性-ipv4-dns首选地址改为223.5.5.5 解决方法:控制面板-网络和共享中心-点击右侧校园网 ...

  6. java投屏 dlna 安卓_dlna投屏软件下载-DLNA投屏 安卓版v1.0.1.1-PC6安卓网

    dlna投屏app是一款很有趣的投屏软件,使用dlna投屏软件可以轻松的将手机上的数据进行一个简单的投屏玩法,从而让你可以感受不一样的影视.音频体验,DLNA投屏是一个功能丰富.操作简单的投屏小助手. ...

  7. java投屏 dlna 安卓_DLNA投屏,支持IOS和安卓

    更新记录 1.0.20200413(2020-04-13) 增加获取本机IPV4地址的接口getIpAddress,解决有些小伙伴需要在手机上起http服务来进行投屏无法获取本机IP的问题.目前只在w ...

  8. vb.net限制软件使用次数_新增投屏及倍数播放,这款软件iOSAndroid全都有,影视神器,抓紧体验...

    小小影视 Android.iOS版 小小影视以前也分享过,最近貌似版本更新了,新增投屏和倍数播放功能,还没用过的可以下载体验! 小小影视APP是一款最全,最新,关键不止有Android版,还有iOS版 ...

  9. 天猫魔盒显示服务器响应错误,天猫魔盒投屏失败怎么办,其实可以自己解决!...

    导读:天猫魔盒魔投系列包括yunos系统电视,近期有些用户反馈,升级后投屏不了或者经常投屏失败.想下载不到乐播投屏来解决时,却已找不到,到底是什么原因呢?有什么自己解决的办法吗? 有不少的电视都采用了 ...

最新文章

  1. python基础知识整理-整理了27个新手必学的Python基础知识点
  2. git commit如何修改默认编辑器为vim
  3. HighNewTech:LL / GCP BOOTH at CES 2019 - January 8-11, 2019 - Westgate Convention Center Las Vegas
  4. 给ztree节点赋值
  5. Ubuntu上sublime配置nodejs运行环境
  6. [转帖]外壳命名空间扩展
  7. 国产5G手机先行!英特尔5G调制解调器芯片2020年才上市
  8. ci框架 查询构造器类
  9. 【Spring第五篇】Autowired:自动装配
  10. Hibernate本机SQL查询示例
  11. Secure CRT 配色方案
  12. 计算机硬盘启动设置方法,bios设置硬盘启动,图文介绍两种设置bios硬盘启动方法...
  13. R语言将dataframe数据中指定数据列的数据从小数转化为百分比表示、数据转换为百分数
  14. Linux C语言编译警告:control reaches end of non-void function
  15. linux 下载文件
  16. 安全生产知识竞赛试题库及答案
  17. 利用多进程/多线程实现多个客户端同时访问同一服务器
  18. Maya2022安装教程
  19. python3 cookie_Python3标准库:http.cookies HTTP cookie
  20. 大一新生必看,自学必看,里昂详解数据结构之二叉树

热门文章

  1. python中文版-python怎么变成中文版
  2. 树莓派python_树莓派使用Python控制LCD1602模块
  3. 火车头采集器 v9免费版使用
  4. 看这里!java架构师教学视频全百度云
  5. Android 联通3G上网的和彩信设置
  6. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第二讲html运行原理及结构
  7. 名人电子北京研发部门关闭
  8. vue3 + vite + ts + setup , 第十二练 Vue3 css style 新特性,样式穿透,插槽选择器,全局选择器,在vue3中使用tailwindcss
  9. 【推荐】Tektronix 泰克示波器DPO3000系列固件升级方法
  10. ADSP-21489的开发详解:VDSP+自己编程写代码开发(8-延时算法)