我打算在javascript中编写DLNA(upnp)客户端。我想知道这是否可能在第一位。Javascript:DLNA客户端
如果是,那么我可以从哪里开始?我需要知道什么才能开始?任何文档和教程链接将不胜感激。我试过谷歌搜索,但没有遇到很多有用的内容。
我只是需要在正确的方向刺激。
谢谢! :)
我打算在javascript中编写DLNA(upnp)客户端。我想知道这是否可能在第一位。Javascript:DLNA客户端
如果是,那么我可以从哪里开始?我需要知道什么才能开始?任何文档和教程链接将不胜感激。我试过谷歌搜索,但没有遇到很多有用的内容。
我只是需要在正确的方向刺激。
谢谢! :)
最适合您开始使用的是来自UPnP论坛的docs bundle中的UPnP设备架构文档。这将协议分成若干区域:
总之,只有当您可以使用本机代码来处理设备发现时,JavaScript UPnP客户端才有可能。如果您决定尝试这种方式,那么开放源代码UPnP协议栈可用于处理大部分发现工作。
从我个人的经验来看,事件最好不要依赖现实世界的设备(至少是媒体渲染器)。事件甚至被UPnP规范所禁用,某些值可能具有较高的节奏和/或数据量,如AVTransport.RelativeTimePosition。但是对HTTPMU(Multicast HTTP over UDP)的需求依然存在。 +1全面概述。 –
哇...我不能够感谢你!这让我对UPnP非常了解。非常感谢您的详细解释。 :)我将尽快开始这个项目的工作。 :) – wiseindy
我不认为控制可以发生在浏览器中的JavaScript。这将是CORS请求,除非Upnp服务器配置为处理此问题,否则它将失败。然而,通过节点终端它可以很容易地工作。 – arjun
看看Plug.Play.js - 一个JavaScript API与通用即插即用通信和播放通过W3C网络服务发现API
https://github.com/rexboy7/plug.play.js
而且ssdp.js获得(UPnP)的服务 - (简单服务发现协议)基于W3C原始套接字API
https://github.com/schien/ssdp.js
而且这里的网络服务发现API的实现是DL的样本实现NA客户端使用上述:https://github.com/mozilla-b2g/gaia/tree/master/tv_apps/dlna-player
编辑:基于Firefox操作系统。
环顾这个主题,根据AndréFiedler的回答,我发现他发布的图书馆位于MDN的UDPSocket。
在主要页面,您可以看到发现例如:
var SSDP_PORT = 1900;
var SSDP_ADDRESS = "239.255.255.250";
var SSDP_DISCOVER_MX = 2;
var SEARCH_TARGET = "urn:schemas-upnp-org:service:ContentDirectory:1";
var SSDP_DISCOVER_PACKET =
"M-SEARCH * HTTP/1.1\r\n" +
"HOST: " + SSDP_ADDRESS + ":" + SSDP_PORT + "\r\n" +
"MAN: \"ssdp:discover\"\r\n" +
"MX: " + SSDP_DISCOVER_MX + "\r\n" +
"ST: " + SEARCH_TARGET + "\r\n" +
"\r\n";
var searchSocket = new UDPSocket({
loopback: true
});
searchSocket.joinMulticastGroup(SSDP_ADDRESS);
searchSocket.onmessage = function (e) {
var msg = String.fromCharCode.apply(null, new Uint8Array(e.data));
console.log(msg);
};
searchSocket.opened.then(function() {
searchSocket.send(SSDP_DISCOVER_PACKET, SSDP_ADDRESS, SSDP_PORT);
setTimeout(function() { searchSocket.close(); }, SSDP_DISCOVER_MX * 1000);
});
首先你需要研究DLNA是什么,然后把它分解到它的个性化需求,然后看看是否有可能用JavaScript。我的猜测是'不'。但我不确定。 –
可能通过不属于JavaScript的activeX访问 – mplungjan