问题标签 [dlna]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - libupnp下的ios多线程套接字挂在send()上
在我的 iOS 应用程序(DLNA 媒体播放器)中,我看到了一个我不明白的挂起......我希望有人能解释一下。
我的应用程序是在位于 C++ 库之上的 Objective C 中构建的,其中一部分是 libupnp。为了记录,在查看下面的代码时,设置了编译标志 SO_NOSIGPIPE。
从广义上讲,该应用程序运行良好,至少在运行 iOS 6 的 iPod 和我的 iPad 上运行良好。它可以处理所有媒体播放器之类的事情。
编辑:我对 iPhone 4 上的操作系统有误,我认为它是 6.x,但它是 5.1.1,值得。
当我开始在 iPhone 4 (iOS 5.1.1) 和 iPhone 5 (iOS 6) 上测试我的应用程序时,就会出现问题......这告诉我我的代码中存在时间问题。
用户选择要在远程数字媒体接收器 (DMR) 上播放/显示的媒体项目。
我的代码调用libupnp,创建soap 命令来实现这一点。然后它调用 http_RequestAndResponse(),它创建套接字,connect()s 到主机,并调用 http_SendMessage,它调用 sock_read_write(我将在后面的消息中包含这个函数)来发送我构建的请求(POST 命令播放 DMR 上的媒体)。然后,使用同一个套接字,调用 http_RecvMessage(它再次调用 sock_read_write() 来接收字节)。此时,调用 select() 等待 DMR 对播放命令做出响应。
在不同的线程上,libupnp 的 Web 服务器收到对我们刚才说要播放的媒体文件位的请求。所以在另一个线程上,我用字节调用 http_SendMessage 来响应请求,它调用 sock_read_write() 将字节写入客户端。
sock_read_write 中的这个 send() 挂起。它不仅挂起 libupnp,而且意味着任何线程上的套接字上都没有更多的通信。
这些挂起的套接字似乎没有超时、死亡或以其他方式终止。当然,它是我正在构建的 DLNA 媒体播放器,关于世界状态的许多命令和报告都通过这些套接字传输,所以我的应用程序实际上变成了僵尸:它响应鼠标点击等等,但是你不能做任何有意义的事情。
我试过让 send() 非阻塞。我已经尝试调用 fcntrl(sock,F_SETFL, O_NONBLOCK) 将其设置为非阻塞,并在调用 send() 之前如果因任何原因失败则返回。
我已经尝试在 send() 上使用类似 MSG_NOWAIT(对 iOS 没有影响)的标志来发送()。
这似乎是一个时间问题。在 iPad 和 iPod 上,我可以一直播放音乐,直到奶牛回家。在 iPhone 4 和 iPhone 5 上,我遇到了挂起。
有什么建议么?(如果您告诉我哪些具体回答了这个问题,我们很乐意接受对 RTFM、阅读手册页、阅读书籍等的建议……)
哦,sock_read_write() 的代码(来自 libupnp 1.6.18):
谢谢!
-肯
android - 同时在多台设备上播放一个多媒体内容?
我可以通过 DLNA 同时在两台或多台设备上发送和显示我的多媒体内容吗?
如果是,我该怎么做?例如,我希望我的电视、平板电脑能够同时播放与我的智能手机(LG Nexus 4)相同的多媒体内容。
如果没有,是否有任何其他协议(如 wifi)来执行此操作。任何方法将不胜感激。
upnp - 如何知道选择哪个版本的 DMR(设备媒体渲染器)?
我想为音频流实现 DLNA 设备媒体渲染器 (DMR)。我在这里找到了文档:http: //upnp.org/resources/upnpresources.zip 并发现似乎有三个版本的 DMR(MediaRenderer:1、MediaRenderer:2、MediaRenderer:3)。我找不到任何关于选择哪一个的建议。有什么理由不选择 MediaRenderer:3?
upnp - 智能电视频道控制
我一直在使用以下文档访问三星智能电视的渲染控制服务。到目前为止,我可以获得主通道的音量并进行更改。我正在使用Cling来做到这一点。
http://upnp.org/specs/av/UPnP-av-RenderingControl-v2-Service.pdf
但是我有一个任务要更改电视频道,我在文档中没有看到任何可以让我这样做的操作。
有人可以指导我如何进行吗?
此外,我在电视上测试了Smart Remote App,它可以成功更改频道。
upnp - Upnp 或 DLNA 可以同时将音频从服务器流式传输到多个渲染器吗?
我想知道 upnp/dlna 协议是否可以同时将音频从单个媒体服务器流式传输到多个媒体渲染器。协议允许这样做吗?谢谢你。
c# - C# 自定义 HTTPWebrequest 初始行
我想使用 C# HttpWebrequest 实现一个 SOAP 请求。
我很擅长定制初始线。有没有简单的解决方案或解决方法?
我希望服务器收到的初始标题行看起来像
java - 使用 CyberGarage CyberLink for Java 的 Android 简单 UPnP / DLNA 控制点
我想使用 CyberGarage“CyberLink for Java”API 为 Android 编写一个 UPnP 控制点应用程序。为了测试 API,我实现了一个非常简单的应用程序。在此应用程序中,UPnP 控制点主动搜索任何 UPnP 根设备,侦听响应和设备通知,并打印网络上可用的设备列表。
该应用程序在 Android 手机上运行,但在我的网络上找不到任何 UPnP 设备。我在两部不同的安卓手机上试过这个。为了检查这是否是特定于 Android 的问题,我实现了与 Java 控制台应用程序相同的功能。有趣的是,Java 控制台应用程序工作得非常好,并且总是显示我网络上的所有 UPnP 设备!
那么为什么这在 Android 上不起作用呢?请注意,在 Android 应用程序中,我必须使用 AsyncTask 在单独的线程上实现网络特定功能。否则我会得到错误,因为我不应该在 UI 线程上运行它。但这不应该是问题,对吗?
下面是两个应用程序的源代码。
安卓应用:
MainActivity.java
我的控制点.java
AndroidManifest.xml
Java 控制台应用程序:
主.java
我的控制点.java
我不知道为什么 java 控制台应用程序可以工作而 android 应用程序不能。我没有从文档中得到任何答案。有谁能够帮我?
android - Cling 内存不足(在三星 Galaxys3 上测试)
我使用cling库为 DLNA 创建了演示。我已按照cling android page上给出的所有说明进行操作。但它给了我内存不足的错误。我已经在 HTC salsa 和三星 Galaxy S3 上对其进行了测试。
日志:
主要活动:
显现:
我错过了什么吗?任何帮助表示赞赏。
提前致谢。
upnp - 浏览排序标准
我正在尝试为视频编写一个 upnp/dlna 客户端,我想允许按标题和日期排序的选项。
使用 Windows7/wmp 作为服务器,我可以使用“dc:title”或“dc:date”进行排序,它似乎可以工作,但测试人员告诉我它在其他服务器上不起作用。有没有一种通用的方法可以知道是否允许排序以及排序标准应该是什么?
谢谢。