我将把广播频道和IPTV频道整合到我的电视上的一个菜单中.问题是在不同来源之间进行切换是一种痛苦.所以基本上我需要在电视上创建一个菜单来选择我想要观看的频道,然后将电视切换到那个频道.我知道如何创建菜单.
解决方案的另一部分是将ITPV频道从mediaserver推送到电视屏幕.这是一个很难的部分.我最终安装了gupnp并玩它.它工作,我将能够编写应用程序.
您是否想过通过DLNA推送内容的更好解决方案?是否可以从命令行控制命令行实用程序或mediaserver?这将是一个理想的选择.
最基本的问题是如何以编程方式从渲染器上的mediaserver播放资源?
谢谢.
我打算用javascript写一个DLNA(upnp)客户端.我想首先知道这是否可行.
如果是,那我可以从哪里开始?开始时我需要知道什么?任何文档和教程的链接将受到高度赞赏.我试过谷歌搜索,但没有遇到很多有用的内容.
我只需要朝着正确的方向努力.
谢谢!:)
最近,铸造技术几乎在我知道的所有地方出现,那些智能电视和电视盒开始“声称”支持这种技术,我就想,嗯,它们是如何工作的?他们使用什么协议?
有一天,我是一名 Nexus6P 用户,它内置了“投射”功能,我的朋友声称他的电视支持“投射”功能,然后他用 iPhone 将屏幕投到电视上,但是当我尝试打开我的投射功能时,它找不到电视设备,我尝试了我手上的所有设备,例如PC(Chrome),甚至尝试了一些第三方软件,但没有成功。(大多只是使用手机内置投播协议的API,没什么用)
而且有趣的是,中国的一些视频平台软件,BiliBili找到了设备,并且工作起来就像魅力一样,用我的Nexus6P,所以我完全困惑,并对铸造技术协议进行了一些研究,以下是我找到的信息
这是我得到的铸造技术协议列表
DLNA/UPNP casting (Media streaming)
这可能是最古老的铸造技术协议,DLNA 最初是为媒体传输而开发的,就像 FTP 一样,它可能向接收设备发送信号并要求其从源接收数据馈送,因为它不是为铸造技术设计的,它播放控制和视频流等功能的泄漏,并且需要应用程序编写自己的数据馈送代码,这就是为什么市场上只有少数大品牌软件支持该协议。(有趣的事实,Windows也隐藏支持该协议)
Chromecast Built-in (Google Cast)
Chromecast,显然是谷歌开发的,而且这个是直接为投射技术而设计的,这样的协议似乎是市场上领先的,一个有趣的事实是,Chromecast内置投影设备似乎也能够在使用该技术的设备上进行投射米拉卡斯特
Miracast
Miracast是Wi-Fi联盟开发的,是Intel WiDi的扩展,可能是市场上的第二选择,在中国广泛使用,与Google无关,Windows也内置了这个协议,功能有点强大Chromecast 也是如此
[Deprecated] Intel WiDi
不再支持
AirPlay
由Apple开发,他们有自己的市场,与我们隔离......水,但这个协议是最有用的一个,因为AirPlay投影设备能够在使用上述任何协议的所有设备上进行投影,这真的很强大,这次给苹果点个赞,只
来源
如果有任何不正确或丢失的信息,请注意我,我愿意更新它们,我只是想整理我们拥有的所有协议,因为互联网似乎泄漏了该领域的信息
现在我的问题来了
我想从我的PC上的Java程序控制我的DLNA电视.特别是,我想:
我相信,我需要实现数字媒体控制器(DLNA-DMC)配置文件.是否有一个允许我轻松完成此操作的Java库?
我在这方面找不到太多的文档.API是否属于NDA?
你能推荐一些阅读吗?
我有Raspberry Pi(使用Raspbian)并将其用作DLNA/UPnP服务器和渲染器.我运行minidlna作为DLNA服务器,我在USB上有一些媒体文件.
我想在安装和卸载驱动器时自动重建DLNA DB.这是通过命令完成的:
sudo service minidlna force-reload
Run Code Online (Sandbox Code Playgroud)
有什么方法可以自动运行这个命令吗?
顺便说一句,我使用"USBmount"软件包来自动挂载USB驱动器.
感谢名单
我知道DLNA是UPnP的子集.我读过这篇文章:UPnP AV和DLNA有什么区别?
但是,我仍然无法理解清楚.DLNA内部有任何功能吗?如何定义此设备是DLNA还是UPnP?为什么让人们对DLNA和UPnP感到困惑?
请指教!!
我正在尝试使用Cling Java库编写DLNA应用程序.我能够搜索DLNA网络中的所有媒体服务器并播放内容.但我需要搜索网络中可用的媒体渲染器并在其上播放内容.就像UPnPlay一样.
提前致谢.
我正在开发一个Android 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() …
Run Code Online (Sandbox Code Playgroud) 发出M-SEARCH命令时,提供服务的所有设备必须使用其提供的服务的IP地址进行回复.
我的手机有2个接口(其中包括):
根据我接收M-SEARCH的接口,我必须使用wifi的IP或mobiel来回复.
如何确定接收请求的接口?我正在寻找一种强有力的方法来做到这一点.寻找192.168 ...所以看起来不是一个好的解决方案.
我这样听M_SEARCH:
MulticastSocket clientSocket;
clientSocket = new MulticastSocket(1900);
clientSocket.joinGroup(InetAddress.getByName("239.255.255.250") );
while(true)
{
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
clientSocket.receive(dp);
final String msg = new String(dp.getData(), 0, dp.getLength());
if (msg.contains("M-SEARCH"))
{
DatagramSocket resSocket = new DatagramSocket(null);
String req = "HTTP/1.1 200 OK\r\n";
req += "LOCATION: http://" + IP_TO_SPECIFY + "/index.html \r\n";
req += "HOST: "+android.os.Build.MODEL+"\r\n";
req += "EXT: \r\n";
req += "ST: upnp:rootdevice\r\n";
byte [] sendData = req.getBytes();
DatagramPacket sendPacket …
Run Code Online (Sandbox Code Playgroud) dlna ×9
upnp ×6
android ×3
java ×3
casting ×1
chromecast ×1
command-line ×1
javascript ×1
linux ×1
miracast ×1
raspberry-pi ×1
raspbian ×1
ssdp ×1
usb-drive ×1
video ×1
windows ×1