{"id":141708,"date":"2013-08-11T19:09:20","date_gmt":"2013-08-11T17:09:20","guid":{"rendered":"http:\/\/www.borncity.com\/blog\/?p=141708"},"modified":"2021-10-15T10:32:45","modified_gmt":"2021-10-15T08:32:45","slug":"nodecast-chromecast-emulator-im-hands-on-teil-2","status":"publish","type":"post","link":"https:\/\/borncity.com\/blog\/2013\/08\/11\/nodecast-chromecast-emulator-im-hands-on-teil-2\/","title":{"rendered":"Nodecast: Chromecast-Emulator (f\u00fcr Windows) how-to &ndash; Teil 2"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" style=\"float: left; margin: 0px 10px 0px 0px; display: inline;\" src=\"https:\/\/borncity.com\/blog\/wp-content\/uploads\/2013\/07\/Chromecast_thumb.jpg\" alt=\"\" width=\"85\" height=\"91\" align=\"left\" border=\"0\" \/>In <a href=\"https:\/\/borncity.com\/blog\/2013\/08\/11\/chromecast-emulatoren-als-testumgebung-teil-1\/\">Teil 1<\/a> habe ich mich ja mit Ersatzl\u00f6sungen f\u00fcr den, von Google k\u00fcrzlich vorgestellten, 35$ Chromecast-HDMI-Adapter besch\u00e4ftigt. In Teil 2 gibt es jetzt Butter bei die Fische. Sebastian Mauer hat eine solche Emulationsl\u00f6sung unter dem Namen Nodecast bei GitHub eingestellt. L\u00e4uft unter Windows, Mac OS X, Linux und was wei\u00df ich. Im nachfolgenden \"how-to\"-Beitrag beschreibe ich die Schritte, wie ihr den Chromecast-Emulator Nodecast unter Windows (ich habe Windows 8.1 Preview verwendet), einrichtet.<\/p>\n<p><!--more--><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ssl-vg03.met.vgwort.de\/na\/c2cffb66e81d42a496e9723e8ab72dc6\" alt=\"\" width=\"1\" height=\"1\" \/>Ok, ich habe es ja bereits in <a href=\"https:\/\/borncity.com\/blog\/2013\/08\/11\/chromecast-emulatoren-als-testumgebung-teil-1\/\">Teil 1<\/a> angedeutet \u2013 Sebastian Mauer hat eine klasse Arbeit mit dem Nodecast-Port f\u00fcr JavaScript und Node.js abgeliefert, aber leider nur eine spartanische Anleitung geliefert. Daher tauchen wir jetzt in die Details ein.<\/p>\n<p>Was gebraucht wird: Ein Windows-Rechner, ein aktueller Google-Chrome als Browser (ich verwende die portable Version von Google Chrome 28 sowie die Beta von Version 29), ein wenig Zeit und ein Internetanschluss zum Herunterladen des ben\u00f6tigten Code.<\/p>\n<h3>Hol dir Nodecast vom GitHub \u2026<\/h3>\n<p>Das Posting von Sebastian zu seinem Nodecast-Projekt findet sich in seinem Google+-Profil. Dort gibt er auch die Adresse auf GitHub an, unter der das <a href=\"https:\/\/github.com\/mauimauer\/nodecast\" target=\"_blank\" rel=\"noopener noreferrer\">Nodecast-Projekt<\/a> gehostet ist.<\/p>\n<p><a href=\"https:\/\/i.imgur.com\/jkvT5DL.jpg\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/jkvT5DL.jpg\" alt=\"\" \/><\/a><\/p>\n<p>Dort ladet ihr euch \u00fcber die Schaltfl\u00e4che <em>Download Zip <\/em>das gepackte Projekt in einen lokalen Ordner und entpackt anschlie\u00dfend die Dateien.<\/p>\n<p><a href=\"https:\/\/i.imgur.com\/JP3Ge4P.jpg\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/JP3Ge4P.jpg\" alt=\"\" \/><\/a><\/p>\n<p>Der Rest ist dann ganz einfach \u2013 der obige Screenshot zeigt euch die README.md, die Sebastian verfasst hat \u2013 und damit legt ihr los. Sollte ja nach ein paar Handgriffen gepackt sein, bei der kurzen Anleitung \u2026<\/p>\n<p>\u2026 ja, nee, ist klar! Ein Noob wie ich, der Node f\u00fcr eine Waschmittelwerbung h\u00e4lt, braucht da schon ein wenig die Hilfe einer Suchmaschine und noch mehr Geduld. Ist wie bei Linux, da darfst Du auch 1.000 Seiten Doku w\u00e4lzen, um im letzten Dokument den entscheidenden Hinweis zu finden, warum etwas nicht geht und wie man es zum Laufen bringt.<\/p>\n<h3>Hole dir Node.js<\/h3>\n<p>JavaScript ist zwar auf jeder Windows-Maschine per Browser enthalten. Aber Sebastian Mauer musste auf das JavaScript-Framework Node.js zur\u00fcckgreifen, um die Streaming-Funktionen implementieren zu k\u00f6nnen. Als erstes braucht ihr daher Node.js, um dieses im n\u00e4chsten Schritt unter Windows zu installieren. Ich habe mal eine Suchmaschine meines Vertrauens befragt und bin auf <a href=\"https:\/\/web.archive.org\/web\/20170624153308\/http:\/\/linux-doku.de:80\/blog\/nodejs-auf-windows-installieren-und-nutzen\" target=\"_blank\" rel=\"noopener noreferrer\">diesen Artikel<\/a> zur Node.js-Installation gesto\u00dfen. War ganz n\u00fctzlich, um \u00fcberhaupt mal Land zu sehen.<\/p>\n<p>Zwischenzeitlich ist die ganze Node.js-Installation recht einfach geworden, es gibt einen Windows-Installer auf <a href=\"http:\/\/nodejs.org\/download\/\" target=\"_blank\" rel=\"noopener noreferrer\">der node.js-Seite<\/a>. Dort findet ihr auch die Installer f\u00fcr Mac OS X oder f\u00fcr diverse Linux-Distributionen.<\/p>\n<h3>Node.js installieren<\/h3>\n<p>Sobald ihr die Datei <em>node-v0.10.15-x86.msi <\/em>f\u00fcr Windows heruntergeladen habt, l\u00e4sst sich diese mit Administratorrechten installieren.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/POvhDvn.jpg\" alt=\"\" \/><\/p>\n<p>Ein Installer f\u00fchrt euch durch die betreffenden Schritte. Nachfolgend findet ihr die Dialogfelder des Setup-Assistenten, samt einigen, m\u00f6glicherweise hilfreichen Anmerkungen.<\/p>\n<p>Nach dem, hier nicht angezeigten Dialogfeld mit der Anerkennung der Lizenzbedingungen wird das Installationsverzeichnis abgefragt. Standardm\u00e4\u00dfig ist der <em>Programme<\/em>-Ordner von Windows voreingestellt.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/aMywbCd.jpg\" alt=\"\" \/><\/p>\n<p>W\u00e4hlt die <em>Change<\/em>-Schaltfl\u00e4che und stellt in gezeigtem Dialogfeld den Zielordner ein.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/Q4Pp52v.jpg\" alt=\"\" \/>Mein Tipp: Legt euch einen Ordner <em>nodecast <\/em>auf dem Windows-Laufwerk an und lasst Nodecast in diesem Ordner installieren. Warum? Im Installationsordner sind sp\u00e4ter die Nodecast-Projektdateien unterzubringen und dann bestimmte Anpassungen vorzunehmen. Wenn ihr den Ordner selbst als Installationsverzeichnis einrichtet, habt ihr vom Benutzerkonto die notwendigen Zugriffsrechte. Sprich: Es muss nicht f\u00fcr jeden Kopier- oder Anpassungsvorgang die Best\u00e4tigung der Benutzerkontensteuerung eingeholt werden. Und es ist auch ganz angenehm, wenn der ganze Projekt-Klump nicht im <em>Programme<\/em>-Ordner des Systems rumd\u00fcmpelt.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/su4gqM4.jpg\" alt=\"\" \/><img decoding=\"async\" src=\"http:\/\/c31.imgup.net\/Node-Setup1545.jpg\" alt=\"\" \/><\/p>\n<p>In obigen Dialogfeld lasst ihr einfach alle Optionen zur Nodecast-Installation zu. Damit gelangt das gesamte Projekt in den Zielordner. Sobald das folgende Dialogfeld erscheint, w\u00e4hlt ihr die <em>Install<\/em>-Schaltfl\u00e4che.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/gAihjxK.jpg\" alt=\"\" \/><\/p>\n<p>Anschlie\u00dfend lasst ihr die Installation durchlaufen. Der Fortschritt wird vom Assistenten angezeigt.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/apCLp2K.jpg\" alt=\"\" \/><\/p>\n<p>Sobald das nachfolgende Dialogfeld erscheint, ist Node.js installiert und das Dialogfeld kann \u00fcber <em>Finish <\/em>geschlossen werden.<\/p>\n<p>Hier ist der Inhalt des Node.js-Installationsordners zu sehen (im konkreten Fall hatte ich das Teil leider im Programme-Ordner installieren lassen). Nun k\u00f6nnt ihr auf die Schnelle bereits einen ersten Text durchf\u00fchren, ob Node.js funktionsf\u00e4hig ist. Hierzu \u00f6ffnet ihr eine (administrative) Eingabeaufforderung. Unter Windows 8.0\/8.1 l\u00e4sst sich diese \u00fcber das Ordnerfenster \u00f6ffnen (einfach den Installationsordner im Navigationsbereich markieren und im Men\u00fc <em>Datei <\/em>die betreffenden Befehle w\u00e4hlen.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/qNDV7wn.jpg\" alt=\"\" \/><\/p>\n<p>Im Fenster der administrativen Eingabeaufforderung, gebt ihr folgende Befehle ein.<\/p>\n<p><em>Node<br \/>\nconsole.log (\"Test\")<\/em><\/p>\n<p>Jeder Befehl ist mit der Eingabeaufforderung zu best\u00e4tigen. Der erste Befehl startet Node.js, welches sich im Fenster mit dem Befehlsprompt &gt; meldet. Der zweite Befehl versucht einen Text in der Eingabeaufforderung auszugeben.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/L781M6R.jpg\" alt=\"\" \/><\/p>\n<p>Wenn das Ergebnis wie im obigen Screenshot gezeigt, aussieht, ist Node.js funktionsf\u00e4hig. Durch Strg+C l\u00e4sst sich das Programm beenden. Im n\u00e4chsten Schritt k\u00f6nnt ihr noch die Batch-Datei <em>Nodevars.bat <\/em>ausf\u00fchren.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/yxa4iqo.jpg\" alt=\"\" \/><\/p>\n<p>Dieses wird hier in einer administrativen Eingabeaufforderung gezeigt und setzt die Pfade in der Path-Umgebungsvariablen.<\/p>\n<h3>Nodecast einrichten<\/h3>\n<p>Nachdem Node.js arbeitsbereit ist, gilt es im n\u00e4chsten Schritt das Git-Hub Nodecast-Project so einzurichten, dass der Chromecast-Emulator arbeitsbereit ist. Ich gehe davon aus, dass das Git-Hub Nodecast-Projektarchiv heruntergeladen und in einem lokalen Ordnern entpackt wurde. Sebastian Mauer k\u00fcrzt den Schritt in der simplen Anweisung \"Make sure to install all dependencies using npm install\" ab. Nett, aber wie geht das? Ich muss gestehen, ich habe ein paar Sch\u00fcsse gebraucht, bis ich es auf die Reihe gebracht hatte (vorher noch nie Ber\u00fchrung mit Node.js gehabt).<\/p>\n<p>1. Zuerst kopiert ihr den Inhalt des Git-Hub-Projektordners in das Nodecast-Installationsverzeichnis.<\/p>\n<p>Wichtig ist, dass die Dateien <em>package.json<\/em>, die XML-Dateien und die Datei <em>server.js<\/em> im Hauptverzeichnis des <em>Nodecast<\/em>-Installationsordners mit der Node.js-Installation liegen und dass die Unterordner des Projekts auch vorhanden sind. Nachfolgender Screenshot zeigt die betreffende Ordnerhierarchie.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/nczpm2d.jpg\" alt=\"\" \/><\/p>\n<p>2. Dann \u00f6ffnet ihr eine administrative Eingabeaufforderung, indem ihr ggf. wie oben beschrieben \u00fcber die Registerkarte <em>Datei <\/em>des Ordnerfensters vorgeht.<\/p>\n<p>3. Im Fenster der Eingabeaufforderung sind dann die Abh\u00e4ngigkeiten des <em>Nodecast<\/em>-Projekts von den Node.js-Bibliotheken mit folgender Anweisung einzurichten.<\/p>\n<p><em>npm install<\/em><\/p>\n<p>Im Installationsordner findet sich hierzu die Datei <em>npm.cmd<\/em>, die das automatisch macht. Die Ausf\u00fchrung des Befehls bewirkt, dass die erforderlichen Verweise (sind in der Datei <em>package.json <\/em>definiert) auf die aus Node.js ben\u00f6tigten Bibliotheken aufgel\u00f6st werden. Das Ganze sieht dann im Fenster der Eingabeaufforderung so aus.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/ZNyNgMV.jpg\" alt=\"\" \/><\/p>\n<p>In der ersten Zeile gibt es eine Warnung, weil ein Repository-Feld fehlt \u2013 aber es d\u00fcrfen keine rot geschriebenen Fehlermeldungen auftreten. Nachfolgend habe ich mal alle npm-Statusmeldung aus der Eingabeaufforderung herausgezogen, um einen \u00dcberblick zu geben, was da an Warnungen erfolgen kann.<\/p>\n<pre>C:\\nodecast&gt;npm install\r\nnpm WARN package.json nodecast@0.0.1 No repository field.\r\nnpm http GET https:\/\/registry.npmjs.org\/peer-ssdp\r\nnpm http GET https:\/\/registry.npmjs.org\/express\r\nnpm http GET https:\/\/registry.npmjs.org\/node-uuid\r\nnpm http GET https:\/\/registry.npmjs.org\/websocket\r\nnpm http GET https:\/\/registry.npmjs.org\/querystring\r\nnpm http GET https:\/\/registry.npmjs.org\/superagent\r\nnpm http 200 https:\/\/registry.npmjs.org\/peer-ssdp\r\nnpm http GET https:\/\/registry.npmjs.org\/peer-ssdp\/-\/peer-ssdp-0.0.2.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/node-uuid\r\nnpm http GET https:\/\/registry.npmjs.org\/node-uuid\/-\/node-uuid-1.4.0.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/querystring\r\nnpm http GET https:\/\/registry.npmjs.org\/querystring\/-\/querystring-0.2.0.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/websocket\r\nnpm http GET https:\/\/registry.npmjs.org\/websocket\/-\/websocket-1.0.8.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/peer-ssdp\/-\/peer-ssdp-0.0.2.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/querystring\/-\/querystring-0.2.0.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/superagent\r\nnpm http GET https:\/\/registry.npmjs.org\/superagent\/-\/superagent-0.15.4.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/websocket\/-\/websocket-1.0.8.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/node-uuid\/-\/node-uuid-1.4.0.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/express\r\nnpm http GET https:\/\/registry.npmjs.org\/express\/-\/express-3.3.5.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/superagent\/-\/superagent-0.15.4.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/express\/-\/express-3.3.5.tgz\r\nnpm http GET https:\/\/registry.npmjs.org\/commander\/1.2.0\r\nnpm http GET https:\/\/registry.npmjs.org\/connect\/2.8.5\r\nnpm http GET https:\/\/registry.npmjs.org\/mkdirp\/0.3.5\r\nnpm http GET https:\/\/registry.npmjs.org\/range-parser\/0.0.4\r\nnpm http GET https:\/\/registry.npmjs.org\/buffer-crc32\/0.2.1\r\nnpm http GET https:\/\/registry.npmjs.org\/send\/0.1.4\r\nnpm http GET https:\/\/registry.npmjs.org\/cookie-signature\/1.0.1\r\nnpm http GET https:\/\/registry.npmjs.org\/debug\r\nnpm http GET https:\/\/registry.npmjs.org\/methods\/0.0.1\r\nnpm http GET https:\/\/registry.npmjs.org\/fresh\/0.2.0\r\nnpm http GET https:\/\/registry.npmjs.org\/cookie\/0.1.0\r\nnpm http GET https:\/\/registry.npmjs.org\/formidable\/1.0.14\r\nnpm http GET https:\/\/registry.npmjs.org\/emitter-component\/1.0.0\r\nnpm http GET https:\/\/registry.npmjs.org\/qs\/0.6.5\r\nnpm http GET https:\/\/registry.npmjs.org\/debug\r\nnpm http GET https:\/\/registry.npmjs.org\/mime\/1.2.5\r\nnpm http GET https:\/\/registry.npmjs.org\/cookiejar\/1.3.0\r\n\r\n&gt; websocket@1.0.8 install C:\\nodecast\\node_modules\\websocket\r\n&gt; node install.js\r\n\r\n[websocket v1.0.8] Attempting to compile native extensions.\r\n[websocket v1.0.8]\r\n    Native code compile failed!!\r\n    Please note that this module DOES NOT REQUIRE the native components\r\n    and will still work without them, though not quite as efficiently.\r\n\r\n    On Windows, native extensions require Visual Studio and Python.\r\n    On Unix, native extensions require Python, make and a C++ compiler.\r\n    Start npm with --websocket:verbose to show compilation output (if any).\r\nnpm http 200 https:\/\/registry.npmjs.org\/range-parser\/0.0.4\r\nnpm http GET https:\/\/registry.npmjs.org\/range-parser\/-\/range-parser-0.0.4.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/commander\/1.2.0\r\nnpm http GET https:\/\/registry.npmjs.org\/commander\/-\/commander-1.2.0.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/mkdirp\/0.3.5\r\nnpm http 200 https:\/\/registry.npmjs.org\/connect\/2.8.5\r\nnpm http GET https:\/\/registry.npmjs.org\/mkdirp\/-\/mkdirp-0.3.5.tgz\r\nnpm http GET https:\/\/registry.npmjs.org\/connect\/-\/connect-2.8.5.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/buffer-crc32\/0.2.1\r\nnpm http GET https:\/\/registry.npmjs.org\/buffer-crc32\/-\/buffer-crc32-0.2.1.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/methods\/0.0.1\r\nnpm http 200 https:\/\/registry.npmjs.org\/send\/0.1.4\r\nnpm http GET https:\/\/registry.npmjs.org\/methods\/-\/methods-0.0.1.tgz\r\nnpm http GET https:\/\/registry.npmjs.org\/send\/-\/send-0.1.4.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/cookie-signature\/1.0.1\r\nnpm http GET .\r\n1.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/debug\r\nnpm http GET https:\/\/registry.npmjs.org\/debug\/-\/debug-0.7.2.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/fresh\/0.2.0\r\nnpm http GET https:\/\/registry.npmjs.org\/fresh\/-\/fresh-0.2.0.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/cookie\/0.1.0\r\nnpm http GET https:\/\/registry.npmjs.org\/cookie\/-\/cookie-0.1.0.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/formidable\/1.0.14\r\nnpm http GET https:\/\/registry.npmjs.org\/formidable\/-\/formidable-1.0.14.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/emitter-component\/1.0.0\r\nnpm http 200 https:\/\/registry.npmjs.org\/qs\/0.6.5\r\nnpm http 200 https:\/\/registry.npmjs.org\/mime\/1.2.5\r\nnpm http GET .\r\n0.0.tgz\r\nnpm http GET https:\/\/registry.npmjs.org\/mime\/-\/mime-1.2.5.tgz\r\nnpm http GET https:\/\/registry.npmjs.org\/qs\/-\/qs-0.6.5.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/cookiejar\/1.3.0\r\nnpm http GET https:\/\/registry.npmjs.org\/cookiejar\/-\/cookiejar-1.3.0.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/debug\r\nnpm http 200 https:\/\/registry.npmjs.org\/range-parser\/-\/range-parser-0.0.4.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/commander\/-\/commander-1.2.0.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/mkdirp\/-\/mkdirp-0.3.5.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/connect\/-\/connect-2.8.5.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/buffer-crc32\/-\/buffer-crc32-0.2.1.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/methods\/-\/methods-0.0.1.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/send\/-\/send-0.1.4.tgz\r\nnpm http 200 .\r\n1.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/debug\/-\/debug-0.7.2.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/fresh\/-\/fresh-0.2.0.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/cookie\/-\/cookie-0.1.0.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/formidable\/-\/formidable-1.0.14.tgz\r\nnpm http 200 .\r\n0.0.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/mime\/-\/mime-1.2.5.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/qs\/-\/qs-0.6.5.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/cookiejar\/-\/cookiejar-1.3.0.tgz\r\nnpm http GET https:\/\/registry.npmjs.org\/keypress\r\nnpm http GET https:\/\/registry.npmjs.org\/mime\r\nnpm http GET https:\/\/registry.npmjs.org\/uid2\/0.0.2\r\nnpm http GET https:\/\/registry.npmjs.org\/pause\/0.0.1\r\nnpm http GET https:\/\/registry.npmjs.org\/bytes\/0.2.0\r\nnpm http 200 https:\/\/registry.npmjs.org\/keypress\r\nnpm http GET https:\/\/registry.npmjs.org\/keypress\/-\/keypress-0.1.0.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/mime\r\nnpm http GET https:\/\/registry.npmjs.org\/mime\/-\/mime-1.2.10.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/uid2\/0.0.2\r\nnpm http 200 https:\/\/registry.npmjs.org\/pause\/0.0.1\r\nnpm http GET https:\/\/registry.npmjs.org\/uid2\/-\/uid2-0.0.2.tgz\r\nnpm http GET https:\/\/registry.npmjs.org\/pause\/-\/pause-0.0.1.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/bytes\/0.2.0\r\nnpm http GET https:\/\/registry.npmjs.org\/bytes\/-\/bytes-0.2.0.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/keypress\/-\/keypress-0.1.0.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/mime\/-\/mime-1.2.10.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/uid2\/-\/uid2-0.0.2.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/pause\/-\/pause-0.0.1.tgz\r\nnpm http 200 https:\/\/registry.npmjs.org\/bytes\/-\/bytes-0.2.0.tgz\r\nnpm WARN prefer global npm@1.3.5 should be installed with -g\r\npeer-ssdp@0.0.2 node_modules\\peer-ssdp\r\n\r\nnode-uuid@1.4.0 node_modules\\node-uuid\r\n\r\nquerystring@0.2.0 node_modules\\querystring\r\n\r\nwebsocket@1.0.8 node_modules\\websocket\r\n\r\nsuperagent@0.15.4 node_modules\\superagent\r\n+-- methods@0.0.1\r\n+-- cookiejar@1.3.0\r\n+-- qs@0.6.5\r\n+-- emitter-component@1.0.0\r\n+-- debug@0.7.2\r\n+-- mime@1.2.5\r\n+-- formidable@1.0.14\r\n\r\nexpress@3.3.5 node_modules\\express\r\n+-- methods@0.0.1\r\n+-- range-parser@0.0.4\r\n+-- cookie-signature@1.0.1\r\n+-- fresh@0.2.0\r\n+-- buffer-crc32@0.2.1\r\n+-- cookie@0.1.0\r\n+-- debug@0.7.2\r\n+-- mkdirp@0.3.5\r\n+-- commander@1.2.0 (keypress@0.1.0)\r\n+-- send@0.1.4 (mime@1.2.10)\r\n+-- connect@2.8.5 (uid2@0.0.2, bytes@0.2.0, qs@0.6.5, pause@0.0.1, formidable@1.\r\n0.14)\r\n\r\nC:\\nodecast&gt;<\/pre>\n<p>Es gibt eine Fehlermeldung, dass die WebSocket native extensions nicht compiliert werden k\u00f6nnen. Das ist aber kein Problem, weil die Node.js-Bibliotheken das auch so aufl\u00f6sen k\u00f6nnen. Ursache ist, dass zum Compilieren eine Visual Studio- und Python-Installation Voraussetzung ist \u2013 was ich auf meinem System nicht habe.<\/p>\n<blockquote><p>Das Ausf\u00fchren des <em>npm install<\/em>-Befehls muss in einer administrativen Eingabeaufforderung erfolgen. Und es ist wichtig, dass die Nodecast-Projektdateien korrekt im Installationsordner vorliegen. Das Kopieren darf erst nach der Node.js-Installation erfolgen. Ich hatte bei der Inbetriebnahme das Problem, dass das Casten von Inhalten scheinbar nicht funktionierte. Daher habe ich dann Node.js w\u00e4hrend diverser Experimente mehrfach neu installiert und wunderte mich, dass <em>npm install<\/em> im Anschluss nur Fehler auswarf. Irgendwann kam ich auf den Trichter, dass bei der Node.js-Installation die Git-Hub-Projektdateien von Nodecast gel\u00f6scht werden.<\/p>\n<p>Es gibt noch die Option npm install \u2013g zu verwenden, um die Dependencies global zu installieren \u2013 was ich auch mal probiert habe. Am Ergebnis \u00e4ndert sich f\u00fcr Nodecast nichts.<\/p><\/blockquote>\n<p>Nach diesen Schritten sollte Windows soweit vorbereitet sein, dass sich Nodecast als Chromecast-Empf\u00e4nger verwenden l\u00e4sst. Falls Sie mit Linux oder Mac OS X arbeiten, ist eine analoge Vorgehensweise erforderlich. Ich bin im Moment nicht sonderlich motiviert, meine Hackintosh-VM oder eine Linux-VM zu booten, um den Nodecast-Ansatz auch noch dort zu testen und zu beschreiben. Falls ihr mit Mac OS X arbeitet, k\u00f6nntet ihr alternativ auch einen Blick auf die <em>Leapcast<\/em>-python-Implementierung werfen. Wolf Paulus hat <a href=\"http:\/\/web.archive.org\/web\/20150504131221\/http:\/\/wolfpaulus.com:80\/jounal\/mac\/chromecasting\/\" target=\"_blank\" rel=\"noopener noreferrer\">hier einen feinen Blog-Beitrag<\/a> zu diesem Thema zusammengeschrieben<\/p>\n<p>In <a href=\"https:\/\/borncity.com\/blog\/2013\/08\/11\/nodecast-chromecast-emulator-im-hands-on-teil-3\/\">Teil 3<\/a> zeige ich dann, wie man das Ganze verheiratet und aus einer YouTube-Seite auf den Chromecast-Emulator Nodecast streamt. Auch da bin ich gegen die Wand gerannt und habe mir die Finger wund getestet, weil ein bestimmter Ansatz mit einem Verbindungsabbruch endete.<\/p>\n<p><strong>Artikelreihe:<\/strong><br \/>\ni: <a title=\"Chromecast-Emulatoren als Testumgebung \u2013 Teil 1\" href=\"https:\/\/borncity.com\/blog\/2013\/08\/11\/chromecast-emulatoren-als-testumgebung-teil-1\/\">Chromecast-Emulatoren als Testumgebung<\/a> \u2013 Teil 1<br \/>\nii: <a href=\"https:\/\/borncity.com\/blog\/2013\/08\/11\/nodecast-chromecast-emulator-im-hands-on-teil-2\/\">Nodecast: Chromecast-Emulator how to<\/a> \u2013 Teil 2<br \/>\niii: <a href=\"https:\/\/borncity.com\/blog\/2013\/08\/11\/nodecast-chromecast-emulator-im-hands-on-teil-3\/\">Nodecast: Chromecast-Emulator im Hands on<\/a> \u2013 Teil 3<br \/>\niv: <a href=\"https:\/\/borncity.com\/blog\/2013\/08\/12\/cheapcast-android-chromecast-emulator-als-beta-verfgbarteil-4\/\">Android Chromecast-Emulator als Beta verf\u00fcgbar<\/a>\u2013Teil 4<\/p>\n<p><strong>\u00c4hnliche Artikel:<br \/>\n<\/strong>a1: <a href=\"https:\/\/borncity.com\/blog\/2013\/07\/24\/chromecast-hdmi-streaming-stick-vorgestellt\/\">Chromecast: HDMI-Streaming-Stick vorgestellt<\/a><br \/>\na2: <a href=\"https:\/\/borncity.com\/blog\/2013\/07\/25\/meine-2-centsgedanken-zu-google-chromecast\/\">Meine 2 Cents\/Gedanken zu Google Chromecast \u2026<\/a><br \/>\na3: <a href=\"https:\/\/borncity.com\/blog\/2013\/07\/27\/kann-google-chromcast-vielleicht-miracast\/\">Kann Google Chromcast vielleicht Miracast?<\/a><br \/>\na4: <a href=\"https:\/\/borncity.com\/blog\/2013\/07\/28\/chromecast-im-teardown\/\">Chromecast im Teardown<\/a><\/p>\n<p>b1: <a href=\"https:\/\/borncity.com\/blog\/2013\/07\/22\/miracast-bei-windows-8-1\/\">Miracast bei Windows 8.1<\/a><br \/>\nb2: <a href=\"https:\/\/borncity.com\/blog\/2013\/07\/23\/dlna-im-hands-on-experiment\/\">DLNA im hands-on-Experiment<\/a><br \/>\nb3: <a href=\"https:\/\/borncity.com\/blog\/2013\/07\/24\/den-fernseher-per-inakustik-stick-mit-dlna-nachrsten\/\">Den Fernseher per inakustik-Stick mit DLNA nachr\u00fcsten<\/a><br \/>\nb4: <a href=\"https:\/\/borncity.com\/blog\/2013\/07\/28\/dlna-streaming-unter-android\/\">DLNA-Streaming unter Android<\/a><br \/>\nb5: <a href=\"https:\/\/borncity.com\/blog\/2013\/08\/09\/cheapcast-googles-chromecast-fr-arme\/\">CheapCast: Googles Chromecast f\u00fcr Arme?<\/a><\/p>\n<p>c1: <a href=\"https:\/\/borncity.com\/blog\/2011\/12\/01\/experimenting-with-ics-in-virtualbox-vmlite-vmware\/\">Experimenting with ICS (in Virtualbox, VMlite, VMware)<\/a><br \/>\nc2: <a href=\"https:\/\/borncity.com\/blog\/2011\/11\/28\/testing-android-x86-ice-cream-sandwich-image-from-vmlite\/\">Testing Android-x86 Ice Cream Sandwich-Image from VMLite<\/a><br \/>\nc3: <a href=\"https:\/\/borncity.com\/blog\/2010\/07\/15\/vboot-boot-virtual-disk\/\">VBoot: Genialer Ansatz zum Booten aus virtuellen Laufwerken<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Teil 1 habe ich mich ja mit Ersatzl\u00f6sungen f\u00fcr den, von Google k\u00fcrzlich vorgestellten, 35$ Chromecast-HDMI-Adapter besch\u00e4ftigt. In Teil 2 gibt es jetzt Butter bei die Fische. Sebastian Mauer hat eine solche Emulationsl\u00f6sung unter dem Namen Nodecast bei GitHub &hellip; <a href=\"https:\/\/borncity.com\/blog\/2013\/08\/11\/nodecast-chromecast-emulator-im-hands-on-teil-2\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[1014,4367,135,2906,3288],"class_list":["post-141708","post","type-post","status-publish","format-standard","hentry","category-allgemein","tag-chrome-browser","tag-chromecast","tag-emulator","tag-nodecast","tag-windows-en"],"_links":{"self":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts\/141708","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/comments?post=141708"}],"version-history":[{"count":0,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts\/141708\/revisions"}],"wp:attachment":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/media?parent=141708"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/categories?post=141708"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/tags?post=141708"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}