- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在开发一款安卓 UPnP/DLNA 应用程序。我有一个控制点,我可以在其中将文件从媒体服务器流式传输到渲染器。我可以在播放期间暂停/播放和停止文件,但我似乎无法弄清楚如何将搜索栏集成到控制点中以显示播放文件的进度并能够与搜索栏交互。我正在使用 Cling Java 库来创建应用程序。如果有人有任何可以帮助我的例子,我将不胜感激。
谢谢
我已尝试实现 SubscriptionCallback 示例并订阅 LastChange
SubscriptionCallback callback = new SubscriptionCallback(service, 600) { // Timeout in seconds
public void established(GENASubscription sub) {
System.out.println("Established: " + sub.getSubscriptionId());
}
@Override
public void failed(GENASubscription sub, UpnpResponse response, Exception ex) {
System.err.println(
createDefaultFailureMessage(response, ex)
);
}
@Override
public void ended(GENASubscription sub, CancelReason reason, UpnpResponse response) {
// Reason should be null, or it didn't end regularly
}
public void eventReceived(GENASubscription sub) {
System.out.println("Event: " + sub.getCurrentSequence().getValue());
try {
lastChange = new LastChange(
new AVTransportLastChangeParser(),
sub.getCurrentValues().get("LastChange").toString()
);
} catch (Exception ex) {
log.warning("Error parsing LastChange event content: " + ex);
return;
}
Map<String, StateVariableValue> values = sub.getCurrentValues();
StateVariableValue status = values.get("Status");
System.out.println("Status is: " + status.toString());
}
public void eventsMissed(GENASubscription sub, int numberOfMissedEvents) {
System.out.println("Missed events: " + numberOfMissedEvents);
}
@Override
protected void failed(GENASubscription arg0,
UpnpResponse arg1, Exception arg2, String arg3) {
}
};
upnpService.getControlPoint().execute(callback);
然后我尝试获取当前播放轨道的时长:
System.out.println("Duration: "+lastChange.getEventedValue(0, AVTransportVariable.CurrentTrackDuration.class).getValue());
但这会返回 NullPointerException。
有什么想法吗??????
********* ***更新***********
我一直在尝试实现 Seek() 但没有成功。
我有我的搜索栏和监听器,但是当我将搜索栏拖到新位置时它总是失败。
seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener()
{
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2)
{
Log.i("SEEKTIME", "time:" + arg1);
upnpService.getControlPoint().execute(new Seek(service, SeekMode.REL_TIME, arg0.toString())
{
@Override
public void success(ActionInvocation invocation)
{
//super.success(invocation);
Log.i("SEEKSUCCESS", "success seek");
}
@Override
public void failure(ActionInvocation arg0, UpnpResponse arg1, String arg2)
{
Log.i("SEEKFAIL", "fail seek");
}
});
}
为什么这会失败的任何建议
最佳答案
您必须轮询渲染器以获取此类信息(参见 AVTransport spec chapter 2.3.1 )。该规范鼓励每秒进行一次轮询,但您可以轻松地阻塞一个真正的硬件渲染器(为此,DLNA 仍然是 a** 中的一个时髦的痛苦,而不是设计的重要部分)。我们的既定做法是每 2-3 秒发送一次 GetPositionInfo()
请求,并将返回的 RelativeTimePosition
值仅视为对本地运行计时器的调整。对于搜索栏大小,您还需要当前媒体的总长度。理想情况下,渲染器会在您订阅 AVTransport.LastChange
时自动告诉您。我不太了解 Cling,但快速浏览一下就会看到 controlpoint.SubscriptionCallback
中的示例。不幸的是,对于真实设备,LastChange
通常不会告诉您任何信息。这些值要么根本不存在,要么具有恒定的惰性值。因此,您需要再次轮询 GetMediaInfo()
并使用 MediaDuration
值。
至于交互,Seek()
是您的 friend ,最好使用 Unit = REL_TIME
和 Target
= 您想要的时间偏移量的参数。请注意,真实世界的渲染器可能不支持此搜索单元(模式)。也许它只支持 TRACK_NR,在这种情况下,搜索栏对您来说基本上是只读的。同样,Cling 应该能够告诉您特定渲染器的 A_ARG_TYPE_SeekMode
允许值。
关于java - UPNP/DLNA 控制点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11602069/
我尝试用在 Linux 上运行的 C++ 开发某种 DLNA 媒体服务器。目前,我正在努力生成所需的 DLNA.ORG_FLAGS 值。我在网上找到了以下帮助: /* DLNA.ORG_FLAGS,
我正在挠头,试图了解 DLNA 1.5 之间的区别。和 2.0 . 任何指针? 提前致谢。 ——保罗 最佳答案 DLNA 版本是 DLNA 规范的范围。每个版本都增加了新的规范,并且范围有所增加。这是
谁能解释一下在不对视频文件进行转码的情况下播放媒体文件(视频)时是否可以获取可用外部字幕(.srt 文件)的 DLNA 标准传递信息。 如果可能的话,谁能告诉我 DLNA 标准中对此进行了解释的地方?
我打算用 javascript 编写一个 DLNA (upnp) 客户端。我首先想知道这是否可能。 如果是,那么我该从哪里开始呢?我需要知道什么才能开始?非常感谢任何文档和教程的链接。我试过谷歌搜索,
我正在寻找在 Android 中创建一个 DLNA 媒体服务器类型的东西。我为自己找到了一个名为 CyberLink 的 Java UPnP 库,我希望为 M-DMS 或移动数字媒体服务器实现 D
我正在开发一个 MiniDLNA 服务器来通过 WiFi 流媒体。现有文件正确显示。但是,当我将新文件添加到媒体文件夹时,所做的更改不会在 MiniDLNA 客户端之间更新。我也尝试过重新启动服务器,
如果轨道顺序播放,谁发起切换到下一首轨道? 控制点。它向数字媒体渲染器询问从轨道开始到下一曲开始的耗时。 或 数字媒体渲染器?怎么样? 最佳答案 与 DLNA 一样,答案是“视情况而定”。 控制点可以
我需要从我的 Android 应用程序中找到我网络中的 DLNA 兼容设备列表。 我正在使用来自 org.cybergarage 的 API。 它们在 Java 中可用,我想让它们支持 Android
我正在开发一款安卓 UPnP/DLNA 应用程序。我有一个控制点,我可以在其中将文件从媒体服务器流式传输到渲染器。我可以在播放期间暂停/播放和停止文件,但我似乎无法弄清楚如何将搜索栏集成到控制点中以显
我打算将广播 channel 与 IPTV channel 整合到我电视上的一个菜单中。问题是在不同来源之间切换是一种痛苦。所以基本上我需要在电视上创建一个菜单来选择我想看的 channel ,然后将
我想知道 upnp/dlna 协议(protocol)是否可以同时将音频从单个媒体服务器流式传输到多个媒体渲染器。协议(protocol)允许这样做吗?谢谢。 最佳答案 基本上,这取决于您所说的“同时
我知道 DLNA 是 UPnP 的子集。我读了这篇文章:What's the difference between UPnP AV and DLNA? 但是,我仍然无法清楚地理解。 DLNA 内部有什
我想通过编程方式检查一个 android 设备是否支持 DLNA,有没有办法找到它,我在开发者网站上尝试过但我找不到它, 最佳答案 使用 Cling 编写 UPnP/DLNA Android 客户端甚
我正在尝试使用 Cling Java 库编写 DLNA 应用程序。我可以搜索 DLNA 网络中的所有媒体服务器并播放内容。但我需要搜索网络中可用的媒体渲染器并在其上播放内容。就像UPnPlay做。 提
使用 Java 库 Cling,我可以使用 upnp 在 LAN 上发现我的电视。电视宣传以下 upnp 服务 渲染控制 AV传输 连接管理器 它还说,它是“MediaRenderer”类型,模型描述
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭去年。 Im
我目前正在我的 Raspberry Pi 上运行 Raspbmc 并激活了 UPnP 流式传输渲染。 我的目标是编写一个简单的 Python 来流式传输视频或音乐播放列表。 我试过了 Coherenc
我正在寻找为我当前的一个应用程序(用于电影管理)添加 DLNA 服务器功能,并且我尝试搜索有关它的任何文档,但到目前为止我只找到了一个名为 Cling 的项目,应该支持安卓。我还没有尝试过,所以如果有
我正在使用很棒的 Cling 库来扫描我的网络以查找 UPnP 设备。我的目标是拼凑一个小的 DLNA 库浏览器,这样我就可以学习这项技术。到目前为止,我已经能够 1. 扫描网络并连接 UPnP 设备
对于一个学期的项目,我想到了将 Windows 7 的 Play 实现到基础设施,以使用手机作为端点(播放器)或将内容从手机流式传输到 Windows 7 机器。有人有使用此 API 的经验吗?这是否
我是一名优秀的程序员,十分优秀!