Live Stream Remux mit xineliboutput und VLC für geringe Bandbreiten

  • Hallo vdr-ler,
    habe lange an verschiedenen Lösungen gebastelt, um Live-TV über geringe Bandbreite zu realiseren, hat u.a. zufriedenstellend mit externremux funktioniert.


    Dabei habe ich auch noch eine weitere einfache Lösung mit VLC ( v0.9.8 ) herausgefunden welche darauf basiert, den durch xineliboutput gelieferten Videostrom "on-the-Fly" auf einen anderen TCP-Port zu remuxen.


    Dies hat mehrere Vorteile:
    - ausser vdr-xineliboutput wird nur vlc benötigt
    - einfacher vlc Kommandozeilenaufruf z.B. über skript
    - funktioniert auch mit pvr350-karten, wo externremux bei mir nie ging
    - Ausgabeformat mit vlc leicht anpassbar
    - sowohl der VDR aber auch ein anderer PC im Netz kann remuxen
    - per vdr-sxfe kann der VDR ohne Neustart des Remuxen verwaltet werden (Sender umstellen ...)
    - alles abspielbar, was vlc abspielt


    Es ist - wie fast alles, wenn mans weiss - sehr einfach: VLC greift den von xineliboutput bereitgestellten Stream ab, rekodiert und remuxt ihn und stellt ihn auf einem anderen TCP-Port wieder zur Verfügung. Oder als VLCSyntax:


    cvlc -d http://<VDR-IP>:37890 :http-caching=3000 :sout="#transcode{vcodec=theo,vb=300,scale=1,acodec=vorb,ab=32,channels=1,audio-sync,width=280,height=220}:duplicate{dst=std{access=http,mux=ogg,dst=<VDR-IP>:37899}}"


    Erläuterung:


    cvlc -d
    cvlc ist die Kommandozeilenoption von 0.9.8, startet als Daemon mit -d
    http://<VDR-IP>:37890 :http-caching=3000
    xineliboutput Ausgabeport mit 3 sek. caching
    :sout="#transcode{vcodec=theo,vb=300,scale=1,acodec=vorb,ab=32,channels=1,audio-sync,width=280,height=220}:duplicate{dst=std{access=http,mux=ogg,dst=<VDR-IP>:37899}}"
    vlc Ausgabekette für das Kodieren und gleichzeitiger Streamausgabe des "dünnen" Streams
    auf Port 37899


    Mit Hilfe des revolunet VLC Plugins kann man sehr einfach eine Webseite erstellen und sich im Fenster das Fernsehen anschauen ODER man öffnet halt mit VLC die Adresse http://<VDR-IP>:37899.

  • Da verstehe ich deine Frage nicht so richtig.


    Also das xineliboutput-plugin läuft problemlos parallel zum streamdev-server/client ohne zu mucken und kann dieses auch ersetzen. Wenn Du nur über vdr-sxfe (Linux) deinen VDR-Server verwalten und/oder mit VLC/mplayer (Linux/Win/Mac/weissderGeier...) Fernsehen gucken willst, brauchst kein streamdev-Plugin.


    Das einzige Problem besteht darin, dass man mit dem xineliboutput-Plugin anders als beim streamdev-Server keine Sender aus dem Kanal-Set einer DVB-T Frequenz explizit aufrufen kann, also z.B. http://<VDR-IP>:3000/<Senderkennung>.


    Verstecken geht natürlich net. Du brauchst schon einen offenen Port, zu dem sich die Clients verbinden können, kannst diesen natürlich aber frei bis 65k wählen.

  • Ich meine damit: ich will über den Fernseher weiterhin fernsehen können, und xineliboutput soll lediglich dafür sorgen das ich über das Netzwerk miterlebe was gerade läuft. Ich habe es gestern installiert, dann mich mit einem Vlc auf dem WinXP Rechner auf http://192.168.0.10:37890 verbunden. Vlc meckert nicht, die logs sagen nichts verdächtiges, netstat sagt auch verbunden, ich sehe aber kein Bild/Ton. Meine Einstellungen müßten daher eigentlich passen da die Verbindung zustande kommt. Kannst du deine Einstellungen posten?
    Mit welchen Parametern startest du xineliboutput?
    Wie sieht deine setup.conf bei xineliboutput aus?


    Danke.

  • mmh, das ist ja merchwürdich ...


    Bitte setze mal das Log-Level vom VDR auf 3, um ihn etwas gesprächiger zu machen und starte ihn danach neu (bei mir unter Debian in /etc/default/vdr die OPTIONS-Variable auf -l 3 ändern).


    Dann ma mit "nmap -p37890 <localhost-ODER-VDR-IP>" gucken, ob der Port offen ist und auf der VDR-Konsole als root mit "tail -f /var/log/syslog |grep xine" oder " ... |grep vdr" mal tracen, wenn Du von vlc aus die Adresse:37890 aufrufst.


    Vielleicht fehlt Dir auch (distri-abhängig) ein bisschen was von den xine-libs, bei mir unter Debian unstable sind wie folgt installiert:


    ii libxine1 1.1.16.1-2 the xine video/media player library, meta-pa
    ii libxine1-bin 1.1.16.1-2 the xine video/media player library, binary
    ii libxine1-console 1.1.16.1-2 libaa/libcaca/framebuffer/directfb related p
    ii libxine1-ffmpeg 1.1.16.1-2 MPEG-related plugins for libxine1
    ii libxine1-misc-plugins 1.1.16.1-2 Input, audio output and post plugins for lib
    ii libxine1-plugins 1.1.16.1-2 the xine video/media player library, meta pa
    ii libxine1-x 1.1.16.1-2 X desktop video output plugins for libxine1
    ii libxine1-xvdr 1.0.3-1 Xine input plugin for vdr-plugin-xineliboutp
    ii libxineliboutput-sxfe 1.0.3-1 Local X-Server frontend for the xineliboutpu
    ii libxinerama1 2:1.0.3-2 X11 Xinerama extension library
    ii phonon-backend-xine 4:4.1.0-2 Phonon Xine 1.1.x backend
    ii vdr-plugin-xineliboutput 1.0.3-1 VDR plugin for Xine based sofdevice frontend
    ii xine-ui 0.99.5+cvs20070914-2.1 the xine video player, user interface
    ii xineliboutput-sxfe 1.0.3-1 Remote X-Server frontend for vdr-plugin-xine



    Meine /etc/vdr/plugins/plugin.xineliboutput.conf sieht so aus:


    --local=none
    --primary
    --remote=37890


    Es ist noch wichtig, die setup.conf vom VDR um die wichtigsten xineliboutput-Parameter für die Steuerung zu erweitern, siehe hierzu auch


    http://www.vdr-wiki.de/wiki/index.php/Xineliboutput-plugin

  • An den libs oder Ports wirds nicht liegen. Ich habe --primary an der Kommandozeile hinzugefügt, damit funktioniert der externe Zugriff auf dem WinXP Rechner, aber diemal ist der Bildschirm am Fernseher dunkel. Ich bräuchte eine Einstellung mit der auf beidem Bild da ist, oder funktioniert das nicht?

  • achso, langsam klärt es sich auf...


    Aba da kann ich dir nicht helfen, ich gucke nur über Netzwerk. Es sollte aber eigentlich kein Problem sein, denn streamdev-server und xineliboutput laufen bei mir auch parallel. Du müsstest vielleicht wirklich mal loggen und hier posten, was das syslog sagt

  • Ich greife den Stream mit VLM/VLC z.B. über "Video4Linux (v4l)" ab.
    Das ist dann auch stabiler beim umschalten.
    "Normales" Streaming per Playlist funktioniert ja mit der #sout Option nicht mehr.
    Die verschiedenen Bandbreiten, je nach Einsatzzweck, stelle ich direkt über das VLC/VLM-Webinterface (etwas geändert von mir), ein.
    [Blockierte Grafik: http://img4.imageshack.us/img4/7037/vlcwebinterfacept6.jpg]


    [Blockierte Grafik: http://img4.imageshack.us/img4/4338/vlcwebinterface1ww0.jpg]


    Allerdings streame ich mit H264/AAC und schicke mir den Stream per UDP an meine dyndns Adresse.
    (Bin noch auf der Suche nach den optimalen H264 Optionen, Vorschläge werden gern gesehen...)


    Der VLC wird bei mir als Dienst gestartet und steht somit auch ohne Login und grafische Oberfläche, bereit.

    Linux Mint Helena (Ubuntu 9.10),
    Athlon X250 2x3.0 GHZ/4GB RAM
    VDR 1.6.x, Streamdev-Server 0.5, Live 0.2 (Eigenkompilate)

    Einmal editiert, zuletzt von vel_tins ()

  • das sieht ja hübsch aus mit deinem vlm-Menü...
    Kannst Du mal eine Zeile aus deiner VLM config hier posten?


    Was meinst Du mit "normales" Streamen" geht nicht mehr mit vlc?

  • Zitat

    das sieht ja hübsch aus mit deinem vlm-Menü... Kannst Du mal eine Zeile aus deiner VLM config hier posten?


    die vlm.conf für das oben abgebildete sieht folgendermassen aus:


    Zitat

    Was meinst Du mit "normales" Streamen" geht nicht mehr mit vlc?


    Streamen geht schon, wenn du es manuell, oder per commandline aus dem VLC startest.
    Wenn du es per Playlist (m3u oder xspf) versuchst, erhältst du folg. Fehlermeldung.

    Zitat

    main error: unsafe option "sout" has been ignored for security reasons

    .


    Leider benötige ich je nach "Tagesform" meines Client-seitigen DSL Anschlusses, unterschiedliche Bitraten.. :evil:
    Und da ich auf commandlinde copy/paste Gefummel keinen Bock hab...
    Bei den 0.8x Versionen vom VLC ging das noch...daher jetzt die Bastelei mit dem VLM.
    Funktioniert an sich aber prima..

    Linux Mint Helena (Ubuntu 9.10),
    Athlon X250 2x3.0 GHZ/4GB RAM
    VDR 1.6.x, Streamdev-Server 0.5, Live 0.2 (Eigenkompilate)

    2 Mal editiert, zuletzt von vel_tins ()

  • Ich weiss nicht, ob das mit H264 auch funktioniert, aber bei mir hat sich bereits oben dargestelltes Transcoding bewährt:


    #transcode{vcodec=theo,vb=300,acodec=vorb,ab=32,channels=1,audio-sync,width=280,height=220}:duplicate{dst=std{access=http,mux=ogg,dst=<IP>:37899}}


    Es zwingt zwar den Rechner auf dem das Transkodieren läuft zu mächtich Arbeit, entlastet aber das Netzwerk gewaltig und geht auch mit WLAN / DSL absolut stabil. VLC läuft bei mir auch als Daemon und völlig problemlos im Dauerbetrieb. Ich habe bereits das Kodieren mal in einer virtuellen Maschine (Virtualbox, VMWare) getestet, auch da gabs nix zu meckern.

  • nunja, also meiner Meinung nach, ist die Qualität bei niedrigen Bitraten bei h264 deutlich besser als beim Theora Codec.
    Allerdings auch wesentlich CPU lastiger.


    Ich habe auf jedem Przessorkern ca. 50-60 % Last beim streamen mit 296/32 kbit/s
    h264/aac, Bildskalierung auf 1.


    Mein alter P4 3000 mit Hyperthreading hats nur gepackt wenn ich Skalierung auf 0.5 eingestellt habe.


    Bei höheren Bitraten (800/128 kbit/s) gehts auf 70-75% hoch


    Habe mir deswegen extra einen Athlon 6000+ zugelegt, weil Bild-Ruckeln geht gar nicht.. :unsch


    Ich würde gerne mal den Adobe Live Media Encoder von hier testen,
    allerdings gibts den wohl nur für Windows.. :tdw

    Linux Mint Helena (Ubuntu 9.10),
    Athlon X250 2x3.0 GHZ/4GB RAM
    VDR 1.6.x, Streamdev-Server 0.5, Live 0.2 (Eigenkompilate)

    Einmal editiert, zuletzt von vel_tins ()

  • Nach einigem Probieren bin ich nun soweit, die FreeTV Kanäle direkt mit VLC via DVB zu streamen.
    D.H.: in meinem VLM Webinterface kann ich auch direkt zappen.
    Der VDR braucht somit nur noch zum Empfang/Aufzeichnung von Pay-TV gestartet zu werden, da VLC leider nicht als "Cardcli**t* des "bösen Plugins" agieren kann. :unsch
    Die vlm.conf für Sat1 sieht z.B.: so aus

    Code
    new SAT-1 broadcast enabled
    setup SAT-1 input dvb://
    setup SAT-1 option dvb-adapter=0
    setup SAT-1 option dvb-frequency=12544000
    setup SAT-1 option dvb-srate=22000000
    setup SAT-1 option dvb-voltage=18
    #setup SAT-1 option dvb-tone=1
    setup SAT-1 option program=17500
    setup SAT-1 output #transcode{vcodec=h264,vb=300,scale=0.5,acodec=mp4a,ab=32,channels=2}:duplicate{dst=std{access=udp,dst=192.168.0.2:1234}}

    Linux Mint Helena (Ubuntu 9.10),
    Athlon X250 2x3.0 GHZ/4GB RAM
    VDR 1.6.x, Streamdev-Server 0.5, Live 0.2 (Eigenkompilate)

    Einmal editiert, zuletzt von vel_tins ()

Jetzt mitmachen!

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