Howto: Streaming ins Internet mit DSL und streamdev-server

  • Obwohl schon mehrfach Streaming howto's hier zu finden sind, hier noch einmal am Beispiel von DSL6000:


    1) DSL Router konfigurieren
    =====================================================================
    1.1) Wake On LAN
    Um den heimischen VDR aufzuwecken bietet sich natürlich WOL an. WOL benutzt UDP Port 9, deswegen muss der DSL Router diese Zugriffe an den VDR weiterleiten:

    Code
    Name--------IP Address---------- Protocol Private Port/Public Port     Inbound Filter   Schedule 		
     Wake-On-LAN 192.168.0.255        UDP                 9/9               Allow All        Always


    siehe http://support.dlink.com/Emula…anced_Virtual_Server.html



    1.2) VDR für WOL einrichten
    =====================================================================
    Die meisten Netzwerkkarten-Treiber schalten das Feature WOL beim Laden aus, deswegen muss das feature bei jedem Boot erneut explizit eingeschaltet werden:

    Code
    /usr/sbin/ethtool -s eth0 wol g


    In meinem Fall erledigen die Startscripte das:
    /etc/rc.d/init.d/network_wakeup


    Code
    cd /etc/rc.d/rc3.d
    ln -s ../init.d/network_wakeup S21network_wakeup


    1.3) Dynamic DNS im Router einrichten
    =====================================================================
    Es gibt mehrere Anbieter im Netz die DynDNS anbieten, also es erlauben einen PC im Internet unter einem selbstvergebenen Namen zu finden. Ich nutze hier im Beispiel www.dyndns.org.
    -> bei dyndns.org anmelden und account einrichten.
    Im Router eintragen: Tools->Dynamic DNS

    Code
    -------------Dynamic DNS---------------------
    Enable Dynamic DNS : yes  
    Server Address :  <www.DynDNS.org (Free)>  
    Host Name : StreamingExample.dyndns.com <-- dein bei dyndns angegebener Hostname
    Username or Key : myUsername   <-- dein dyndns angegebener Username
    Password or Key : *****  <-- dein dyndns angegebenes Passwort
    Verify Password or Key : *****


    siehe http://support.dlink.com/Emula…00/Tools_Dynamic_DNS.html



    1.4) Test WOL aus dem Netz
    =====================================================================
    mit ether-wake (linux) oder Wol.exe (Win) ein Magic Packet an die dyndns Adresse mit der MAC Adresse der VDR-Netzwerkkarte schicken.
    Wenn alles bis hierhin korrekt ist wacht der VDR auf. Ansonsten wieder zurück zu 1.1 und nachbessern oder mal nur im internen LAN ein wol packet absetzen.


    Code
    ether-wake -p StreamingExample.dyndns.com 00:11:22:33:44:55


    Natürlich Namen und MAC Adresse ersetzen. Die einzutragende MAC Adresse verrät ein

    Code
    ifconfig eth0 | grep HWaddr


    auf dem VDR.


    1.5) Einrichten des Router für Streaming
    =====================================================================


    Anfrage aus dem Netz auf für den Streaming Port müssen an den VDR ins interne Netz weitergeleitet werden. Also eine zweite 'Virtual Server' Rule anlegen;

    Code
    Name--------IP Address---------- Protocol Private Port/Public Port     Inbound Filter   Schedule 		
     Video-Stream 192.168.0.2         TCP               3000/3000            Allow All        Always


    siehe http://support.dlink.com/Emula…anced_Virtual_Server.html



    Hier im Beispiel ist der VDR die 192.168.0.2, fürs Internet wird Port 3000 benutzt. Der externe Port kann ohne weiteres geändert werden, würde ich sogar so vorschlagen.


    2) VDR fürs Streamen einrichten
    =====================================================================


    2.1) streamdev Plugin installieren und streamdev-server Plugin mitstarten
    =====================================================================
    siehe http://www.vdr-wiki.de/wiki/index.php/Streamdev-plugin


    2.2) $VDRCONFIG/plugins/streamdevhosts.conf anpassen:
    =====================================================================

    Code
    0.0.0.0/0            # any host on any net (USE THIS WITH CARE!)


    Wie man hier sieht kann damit allerdings *jeder* aus dem Netz auf den Stream zugreifen.


    2.3) /root/externremux.sh anlegen
    =====================================================================

    Bash
    #!/bin/sh
    IN=-
    OUT=/tmp/out
    rm -f $OUT.avi /tmp/out.log
    /usr/bin/mkfifo $OUT.avi
    cat $OUT.avi & /usr/local/bin/mencoder "$IN" -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=400 -oac mp3lame -lameopts cbr:preset=96:mode=0 -vf scale=576:324 -o $OUT.avi &>$OUT.log


    Hier müssen Pfad zu mencoder, sowie Bitraten angepasst werden. Im Beispiel passt das für DSL 6000 ganz gut.


    3. Testen
    =====================================================================
    Der Zugriff auf den Stream erfolgt dann über http://StreamingExample.dyndns.com/3000/Extern/1


    Falls in 1.5 ein anderer externer Port angegeben wurde muss die 3000 in diese Nummer geändert werden. Namen an den bei dyndns angegebenen Namen anpassen, 1 ist der aktuelle Kanal.



    Ich nutze zur Wiedergabe den SMPlayer, siehe http://smplayer.sourceforge.net/. Der ist ganz nett, siehe Abbildung von der sourceforge Seite:


    [Blockierte Grafik: http://smplayer.sourceforge.net/images/screenshots/video_en.jpg]


    Es macht Sinn in den Einstellungen den Buffer auf ca. 2,5MB zu erhöhen, damit läuft streaming ohne Aussetzer.


    viel Spaß.. :)

  • Hallo


    Zitat: Matzetronic


    Das Problem wird bei den meisten sein, dass sie keine Möglichkeit haben, auf dem Router die MAC-Adresse des aufzuweckenden Clients fest einzutragen.


    Das bedeutet, dass der Router eine ARP-Anfrage nach der zur IP gehörenden MAC-Adresse stellt - keine Antwort bekommt - und deshalb das WoL-Paket nicht zum Client übermittelt ...


    ------------------------


    Fritz!Box


    http://www.ip-phone-forum.de/showthread.php?t=98045&highlight=arp


    LG Ronny

  • Der Router braucht die MAC nicht zu wissen, er sieht ein normales UDP Packet auf Port 9. Das wird an die angegebenen IPs weitergegeben.


    Ein Magic Packet besteht übrigens lediglich aus 6xFF gefolgt von 16x MAC Adresse, ist also nix was von normalen Paketen abweicht.

  • Klappt hier nicht.


    Erst nach setzen von nem permanenten Eintrag in der Tabelle ... auf der Fritz!Box (PERM)


    Code
    shell> arp
    crux (192.168.178.21) at 00:50:8B:F6:99:6A [ether] PERM on lan


    Alle anderen Adressen, wirft die Box nach gewisser Zeit weg.


    LG Ronny

  • Hast du die 192.168.178.21 oder die 192.168.178.255 im Router angegeben?

  • Zitat

    Original von wirbel
    Hast du die 192.168.178.21 oder die 192.168.178.255 im Router angegeben?


    Ich teste, es gleich mal. (hatte immer die 192.168.178.21) eingetragen. (wäre ja ein Ding).


    :ot


    Hatte, auch mal eine Idee (zu [Announce] WakeMeUp - Server-0.14 / Client-0.9 von Matzetronic).


    Und zwar, über den Service, die VDR Kiste wecken zu lassen.


    http://www.rshut.com/products/wol/


    Hier der Schnippsel.



    Klappt auch alles Prima.


    Aber, nur mit Modifiaktionen auf der Fritz!Box, sprich ARP Eintrag.


    LG Ronny

  • Tja, dann brauchst du nen besseren Router. :) Bei mir klappts bestens.

  • Zitat

    Original von wirbel
    Tja, dann brauchst du nen besseren Router. :) Bei mir klappts bestens.


    :abgelehnt


    Was hast Du denn, für einen?


    LG Ronny

  • DGL4100


    Übrigens..


    Zitat


    Ziel-Netzwerk unterstützt "Directed Broadcasting"
    Da ein ausgeschalteter Rechner im LAN keine IP-Adresse besitzt, kann das MagicPaket nur durch eine Broadcast-Nachricht innerhalb des lokalen Netzes verschickt werden. Die IP-Adresse für dieses Broadcasting endet auf ".255" (bei Netzwerken mit einer Subnetzmaske 255.255.255.0). Da das private Netz nicht über das Internet geroutet werden darf (es erscheint ja auch nur als einzelne öffentliche IP-Hostadresse), können natürlich auch keine Broadcast-Nachrichten für das private Netz direkt über das Internet (WAN) in das private Netz versendet werden: Der für die privaten Netze reservierte Adressbereich existiert im Internet per Definition schlichtweg nicht. ("Directed Broadcasting" im eigentlichen Sinne des Wortes) Auch das Senden von Directed Broadcasting Nachrichten an öffentliche Netze, was prinzipiell möglich ist, wird aus sicherheitstechnischen Gründen von den Routern im Internet im allgemeinen unterbunden. Das MagicPaket wird nun in eine (Unicast-)IP-Nachricht verpackt, und mittels "UDP" (weil ja das Ziel nicht antworten soll) an die (WAN-Host-)Adresse des (privaten) Zielnetzwerkes geschickt. Der Router muss nun die Funktionalität besitzten, die an dem definierten Port empfangene IP-Nachricht als Broadcast in das lokale Netz zu senden ("Directed Broadcasting" im übertragenen Sinne).


    Hinweis:
    Falls jemand bemerkt, eine Portweiterleitung auf die IP des Rechners funktioniert ja auch, sollte man bedenken, dass dies eher zufällig geschieht und von der Firmware des Routers abhängig nur befristet klappt. Das sind häufig nur einige Sekunden, es kann aber auch erheblich länger dauern. Das liegt an der Tatsache, dass die Router die Zuordnung von MAC- zu IP-Adressen eine gewisse Zeit vorhalten (ARP-Tabelle), um nicht permanent sogenannte "Who-Is"-Pakete ins Netz senden zu müssen. Das hat nichts mit der Zuordnung von Rechner zu IP in der Routerkonfiguration zu tun. Diese bewirkt nur, dass der Rechner beim Einschalten ("Ich bin wieder da, gib mir 'ne IP") jedesmal die gleiche bekommt. Die ARP wird deswegen niemals permanent gespeichert bleiben. Das wäre auch sinnlos, weil man trotzdem auch selbst dem Rechner eine IP verpassen, und diese nach belieben ändern kann.


    http://ifatwww.et.uni-magdeburg.de/wol/

  • Du kannst auch nur einen Bereich des Subnetzes mit DHCP fahren. Zumindest geht das bei meinem Router. Dann bräuchtest du nur einen Rechner umstellen.

  • Zitat

    Original von wirbel
    Du kannst auch nur einen Bereich des Subnetzes mit DHCP fahren. Zumindest geht das bei meinem Router. Dann bräuchtest du nur einen Rechner umstellen.


    Mal schauen.


    Bei Deinem Router, scheint so und so einiges mehr zu gehen :]


    --------------------


    Meine Box (Fritz!Box Fon) ist auch von ANNO (Ebay 10,50 € inc Versand), obwohl die Firmware nicht so alt ist.


    Code
    Version:  	   	06.04.33  	   	Datum:  	   	21.06.2007


    Villeicht funktioniert das ganze ja mit neueren Boxen. (würde mich jedenfalls interessieren)


    LG Ronny

  • Ich hab schon von vielen D-Link Routern gelesen dass es geht, meiner ist übrigens auch D-Link.

  • Ich häng mich mal an diesen Thread, da er gut passt...:
    Das Streaming übers Internet läuft perfekt und ich wäre wunschlos glücklich, wenn mein Port 3000 nicht für alle offen wäre :tdw


    Was gäbe es denn da für Möglichkeiten dies zu ändern?
    Kann man irgendwo ein Passwort angeben? (so wie beim VDRAdmin-AM)


    Die streamdevhosts anpassen bringt nichts, da mein VDR hinter dem Internetrouter (WRT54GL) hängt... extra ein VPN einrichten hätte ich für Overkill gehalten, vor allem weil ich oft von unterschiedlichen PCs aus arbeite...


    Vielleicht hat ja jemand eine Idee für mich...

    Server: 19" Rack - yaVDR 0.5, 4x DVB-S2
    Server (Reserve): 19" Rack Server - Ubuntu 10.04 + yaVDR Repo (COMPUCASE 4HE, GIGABYTE 770TA-UD3, SNT-BA3151-1 Backplane, Athlon II X2 245e, 4 GB, 2x WD Caviar Green 2TB, 3x TT-budget S2-1600)
    Client "Wohnzimmer": Zotac ZBOX (MLD 4.0.1, Nvidia, Atom)
    Client "Schlafzimmer": Zotac ZBOX (MLD 3.0.3, Nvidia, Atom)
    Client "Kinderzimmer": Asus EeeBox EB1012P-B0550 (yaVDR 0.5, Nvidia, Atom)
    Client "Fitness": Zotac ZBOX (MLD 3.0.3, Nvidia, Atom)
    Client "Küche": Asus EeeBox B202 (Lubuntu+VLC)
    Client "Büro" (Lubuntu)
    Client "Terrasse": NSLU2 (Debian, MPD)

  • Du kannst doch den Router jeden andren Port von extern nach deinen internen umleiten. Oder die Freischaltung des Ports mit einem Request triggern.


    Hängt eher davon ab, was du für nen Router hast.

  • Danke für die Antwort. Hmm, mein Router scheint ein recht einfaches Modell zu sein - ich will ihn aber ungern mit altenativer Firmware bestücken, da er ansonsten super stabil funktioniert...
    Mein Linksys WRT54GL bietet die Möglichkeit des "Port Range Forward" (Port von/bis und Ziel IP) und einer "Port Triggerung":


    Code
    Triggered Range     	 	 Forwarded Range  	
    Application 	Start Port 	End Port 	Start Port 	End Port 	Enable


    Also Triggered Range (mit Start und End Port) und den dazugehörigen Forwarded Range (auch mit Start und End Port)


    Nur kann ich damit nichts anfangen, da ich nicht verstehe, was die Funktion Port Triggerung macht(?)
    Vielleicht kann ja jemand damit was anfangen... wäre sehr nett!

    Server: 19" Rack - yaVDR 0.5, 4x DVB-S2
    Server (Reserve): 19" Rack Server - Ubuntu 10.04 + yaVDR Repo (COMPUCASE 4HE, GIGABYTE 770TA-UD3, SNT-BA3151-1 Backplane, Athlon II X2 245e, 4 GB, 2x WD Caviar Green 2TB, 3x TT-budget S2-1600)
    Client "Wohnzimmer": Zotac ZBOX (MLD 4.0.1, Nvidia, Atom)
    Client "Schlafzimmer": Zotac ZBOX (MLD 3.0.3, Nvidia, Atom)
    Client "Kinderzimmer": Asus EeeBox EB1012P-B0550 (yaVDR 0.5, Nvidia, Atom)
    Client "Fitness": Zotac ZBOX (MLD 3.0.3, Nvidia, Atom)
    Client "Küche": Asus EeeBox B202 (Lubuntu+VLC)
    Client "Büro" (Lubuntu)
    Client "Terrasse": NSLU2 (Debian, MPD)

  • Zitat

    Original von Tiroler
    Das Streaming übers Internet läuft perfekt und ich wäre wunschlos glücklich, wenn mein Port 3000 nicht für alle offen wäre :tdw


    Was gäbe es denn da für Möglichkeiten dies zu ändern?
    Kann man irgendwo ein Passwort angeben? (so wie beim VDRAdmin-AM)


    Patch für Authentifizierung findest Du im Bugtracker. Wird die Tage eingecheckt - sobald ich ein bisschen Luft habe.

  • Toll dass du dir so viel Mühe gibst - kein Stress, ist "Nice to have" - rennt aber (mir) nicht weg...
    Gerne teste ich deine Lösung aber durch, sobald du dein okay gibst...

    Server: 19" Rack - yaVDR 0.5, 4x DVB-S2
    Server (Reserve): 19" Rack Server - Ubuntu 10.04 + yaVDR Repo (COMPUCASE 4HE, GIGABYTE 770TA-UD3, SNT-BA3151-1 Backplane, Athlon II X2 245e, 4 GB, 2x WD Caviar Green 2TB, 3x TT-budget S2-1600)
    Client "Wohnzimmer": Zotac ZBOX (MLD 4.0.1, Nvidia, Atom)
    Client "Schlafzimmer": Zotac ZBOX (MLD 3.0.3, Nvidia, Atom)
    Client "Kinderzimmer": Asus EeeBox EB1012P-B0550 (yaVDR 0.5, Nvidia, Atom)
    Client "Fitness": Zotac ZBOX (MLD 3.0.3, Nvidia, Atom)
    Client "Küche": Asus EeeBox B202 (Lubuntu+VLC)
    Client "Büro" (Lubuntu)
    Client "Terrasse": NSLU2 (Debian, MPD)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!