我打算在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