DVB-T Empfang und paralleler Stream der Programme

  • Hallo,
    ich möchte unter Windows mit dem VLC-Player 2.1.5 mehrere DVB-T Programme empfangen und gleichzeitig als einzelne Streams (4× Stream) im LAN (z.B. als 4× Multicast mit unterschiedlichen Ports oder Namen) verteilen. Die einzelnen Streams werden auf einem anderen PC (große "Anzeigetafel") in einer html-Seite (Sendername mit Live-Stream) eingebunden. Damit entsteht ein TV-Mosaic, dass mit verschiedenen Internet-Streams ergänzt wird.


    Es gibt für Linux eine Anleitung, die ich mit VLC 2.1.5 unter Windows leider nicht erfolgreich anpassen konnte.
    https://evilshit.wordpress.com…le-dvb-t-tuner-using-vlc/


    Wie kann eine Lösung für Windows mit VLC 2.1.5 aussehen?


    Ich habe über das Menü Medien/Stream/Aufnahmegerät/TV-digital/ DVB-T ausgewählt, Transponder/Frequenz 554 MHz, Bandbreite 8 MHz eingegeben und danach http oder rtp-Streaming mit MPEG2-Transportstrom ausgewählt. Den Stream, auch Multicast, kann ich von einem anderen PC erfolgreich wiedergeben. Wenn ich im Server-PC alle Elementarstreams auswähle, werden am Client-PC alle 4× TV-Programme (vgl. DVB-T-Codec.jpg - IDs: 101,201,301,401) automatisch wiedergegeben. Wie kann man die vier TV-Programme als einzlene Adressen abgreifen um in der gewünschten html-Seite einbinden?


    Vielen Dank vorab.
    Thomas

  • Wie kann man die vier TV-Programme als einzlene Adressen abgreifen um in der gewünschten html-Seite einbinden?


    Hallo Thomas,


    um ein bestimmte TV-Programm "abzugreifen", muss die Service-ID angegeben werden. In den Häufig gestellten Fragen (siehe den Link unter meiner Antwort) findest Du dafür einen Hinweis.


    MfG, kodela

  • Hallo Kodela,


    vielen Dank für die schnelle Reaktion auf meine Frage "DVB-T Empfang und paralleler Stream der Programme". Wenn ich das richtig gelesen habe, kann man die Service-ID im VLC-Player über die Medieninformation/Codec (Tastenkombination [Strg]+[J]) auslesen. Hier werden alle im DVB-Transportstrom enthaltenen Elementarstreams gelistet. Im angehangenen Bild meiner Frage habe ich die für mich interessanten Codec-Informationen der im DVB-Transportstrom enthaltenen vier Video-IDs eingefügt.


    Wenn man auf dem Server mit dem VLC-Player einen neuen Stream erstellt wird man Schritt für Schritt weitergeführt. Im Fenster Streamausgabe / Optionen einstellen wird ein Eingabebereich namens "Generierte Stream-Ausgabe-String" angezeigt, der folgenden Text enthält (Beispiel: rtp-Streaming mit Multicast IP-Adresse).


    :sout=#transcode{vcodec=mp2v,vb=800,acodec=mpga,ab=128,channels=2,samplerate=44100}:rtp{dst=224.0.0.0,port=5004,mux=ts,sap,name=dvbt} :sout-keep


    Mein Beispiel für http-Streaming:


    :sout=#transcode{vcodec=mp2v,vb=800,acodec=mpga,ab=128,channels=2,samplerate=44100}:http{mux=ts,dst=:8080/} :sout-keep


    Wenn ich im Streamausgabe-Fenster das Häckchen für alle Elementarstreams auswähle wird der obige Text mit ":sout-all" erweitert.
    Ich vermute, dass ich an dieser Stelle meinen Wunsch, alle im DVB-Transportstrom enthaltenen Fernsehprogramme (Video-IDs) separat, mit eigener IP-Adresse (unterschiedlicher Port, Name,...) zu streamen, realisiert werden könnte.


    Meine erfolglose Text-Ergänzung für http-Streaming sieht so aus (passt nicht zum Text für rtp-Streaming):


    :sout=#duplicate{dst=std{
    access=http,mux=ts,dst=0.0.0.0:8080/tv1},select="program=101",dst=std{
    access=http,mux=ts,dst=0.0.0.0:8080/tv2},select="program=201",dst=std{
    access=http,mux=ts,dst=0.0.0.0:8080/tv3},select="program=301",dst=std{
    access=http,mux=ts,dst=0.0.0.0:8080/tv4},select="program=401"}


    Allerdings ist die Option #duplicate bestimmt falsch. Vermutlich ist die Option "#es" für meine Frage (4× separate Video-Streams) die richtige. An dieser Stelle habe ich zu viele Fragen (http oder rtp-Streaming?, :sout-Angaben?, VLM-Konfiguration notwendig?).
    Ein paar Text-Beispiele für die Streaming-Optionen wie z.B. für "#es" helfen bestimmt.


    Für rtp-Streaming habe ich momentan kein Beispiel. Sowohl rtp-Multicast-Streaming als http-Streaming der DVB-T Programme gelingen, aber ohne 4× unterscheidbare IP-Adressen. Auf dem Client-PC werden nach Eingabe der Netzwerk-Stream-Adresse alle vier Fernsehprogramme gleichzeitig wiedergegeben.


    Vielleicht ist mein Problem durch die Antwort etwas deutlicher beschrieben.


    MfG, Thomas

  • Wenn ich das richtig gelesen habe, kann man die Service-ID im VLC-Player über die Medieninformation/Codec (Tastenkombination [Strg]+[J]) auslesen.


    Hallo Thomas,


    nein, das hast Du nicht richtig gelesen. Über den VLC kann man nur die Stream ID aber nicht die Service ID auslesen. Wie es geht, ist nachzulesen.


    MfG, kodela

  • Hallo Kodela,


    habe einen Blick in "Häufig gestellte Fragen zum VLC" geworfen, den DVBViewer in der Demo-Version heruntergeladen und installiert. Dieser wollte noch DirectX9 haben. Also DirectX9 installiert. Danach im DVB-Viewer die Schritte bis zum Sendersuchlauf ausgeführt und im Senderlisten-Editor die Service-IDs der im DVB-Transportstrom als Multiplex übertragenen Fernsehprogramme (SID: 16387, 16426, 19970, 19973) ausgelesen.


    Auf dem Server habe ich nun im VLC-Player einen neuen Stream (rtp/MPEG TS, Multicast) erstellt und kann jeweils mein ausgewähltes TV-Programm wiedergeben, wenn ich im Programmfenster Streamausgabe/Optionen an den Text eine Ergänzung (Bsp.: ,select="program=16387" oder ,select="program=19973") anfüge.


    :sout=#transcode{vcodec=mp2v,vb=800,acodec=mpga,ab=128,channels=2,samplerate=44100}:rtp{dst=224.0.0.0,port=5004,mux=ts,sap,name=bbc},select="program=16387"


    Die anderen drei TV-Programme will ich mit dem folgenden text ausgeben.


    :rtp{dst=224.0.0.1,port=5004,mux=ts,sap,name=btv},select="program=16426"
    :rtp{dst=224.0.0.2,port=5004,mux=ts,sap,name=blf},select="program=19970"
    :rtp{dst=224.0.0.3,port=5004,mux=ts,sap,name=info},select="program=19973"


    Vollständiger Text:


    :sout=#transcode{vcodec=mp2v,vb=800,acodec=mpga,ab=128,channels=2,samplerate=44100}:rtp{dst=224.0.0.0,port=5004,mux=ts,sap,name=bbc},select="program=16387":rtp{dst=224.0.0.1,port=5004,mux=ts,sap,name=btv},select="program=16426":rtp{dst=224.0.0.2,port=5004,mux=ts,sap,name=blf},select="program=19970":rtp{dst=224.0.0.3,port=5004,mux=ts,sap,name=info},select="program=19973":sout-keep


    Ich habe zur Unterscheidung der Streams die IP-Adressen jeweils geändert. Auf dem Client-PC kann ich aber immer nur das erste Programm wiedergeben.


    Welche Anpassungen sind noch erforderlich?


    MfG
    Thomas

  • Hallo Thomas,


    was ist, wenn Du in den erweiterten Einstellungen -> Input/Codecs die Option Bevorzuge native Streamaufnahme deaktivierst?


    Hier einmal die Kommandozeile für das Streamen eines TV-Programmes:


    Code
    1. vlc dvb-t://frequency=666000000:bandwidth=0 :dvb-adapter=0 :live-caching=300 :program=32 :sout=#transcode{vcodec=h264,vb=800,scale=0.5,acodec=mpga,ab=128,channels=2,samplerate=44100}:rtp{dst=224.0.0.0,port=5004,mux=ts,sap,name=Das_Erste} :sout-keep


    So wie ich ihn hier wiedergegeben habe, wurde er von mir aus den Angaben, die mir der VLC macht, wenn ich ein bestimmtes TV-Programm (besser gesagt, ein TV-Sender) vom Interface aus ins Heimnetz streamen will, kopiert.


    Die Optionen sap und name ist mit aufgenommen, weil ich bei der manuellen Einstellung dem Stream einen Namen gebe. SAP steht für Session Announcement Protocol und ermöglicht vereinfacht gesagt, dem Stream einen Namen zu geben, unter dem er über Lokales Netzwerk -> Netzwerkstreams (SAP) vom Client gesehen und gestartet werden kann.
    Damit auch nur eines der vier Programme gestreamt wird, muss die Option Bevorzuge native Streamaufnahme deaktiviert sein.


    Der Parameter scale ist natürlich nicht zwingend. Soll der Stream nicht skaliert werden, kann er wegfallen.


    Da einige der mit diesem Kammandozeilenstring übergebenen Parameter standardmäßig beim VLC bereits gesetzt sind, die bevorzugte Streamaufnahme dagegen gesetzt ist und deaktiviert werden soll, habe ich den Kommandozeilenstring so geändert:


    Code
    1. vlc dvb-t://frequency=666000000 :program=32 :input-record-native=0 :sout=#transcode{vcodec=h264,vb=800,scale=0.5,acodec=mpga,ab=128,channels=2,samplerate=44100}:rtp{dst=224.0.0.0,port=5004,mux=ts,sap,name=Das_Erste} :sout-keep


    Bandbreite, Adapter und Caching sind weggefallen und die native Streamaufnahme ist hinzugekommen.


    MfG, kodela

  • Hallo Kodela,


    habe in den erweiterten Einstellungen im Menü Input/Codec die Option bevorzuge native Streamaufnahme deaktiviert und den Player neu gestartet. Dann den DVB-T Empfang und rtp/MPEG Transportstream eingerichtet.
    Im Programmfenster Streamausgabe/Optionen den folgenden Text eingegeben.


    :sout=#transcode{vcodec=mp2v,vb=800,acodec=mpga,ab=128,channels=2,samplerate=44100}:rtp{dst=224.0.0.0,port=5004,mux=ts,sap,name=bbc},select="program=16387":rtp{dst=224.0.0.1,port=5004,mux=ts,sap,name=btv},select="program=16426":rtp{dst=224.0.0.2,port=5004,mux=ts,sap,name=lf},select="program=19970":rtp{dst=224.0.0.3,port=5004,mux=ts,sap,name=info},select="program=19973" :sout-keep


    Auf dem Client-PC kann ich immer nur den Stream unter der IP-Adresse rtp://224.0.0.0:5004 wiedergeben.
    Die Wiedergabe der anderen IP-Adressen z.B. rtp://224.0.0.1:5004 erfolgt nicht. Im Meldungsfenster steht "main info:stopping playback" und "main error: failed to rezize display".


    MfG
    Thomas

  • Hallo Thomas,


    wie machst Du das mit den mehreren Streams, mit einer Instanz des VLC? Das kannst Du vergessen, denn die werden dann, so wie Du das machst in Serie und nicht gleichzeitig ausgegeben.


    Du musst schon nach dem von mir aufgezeigten Muster für jeden zu streamenden Sender eine eigene Instanz des VLC einsetzen.


    Du kannst allerdings alle Sender eines Transponders streamen. Dann werden vom Client für jeden Sender ein Fenster geöffnet.


    Dafür sähe der Kammandozeilenstring beispielsweise so aus:


    Code
    1. vlc dvb-t://frequency=666000000 :input-record-native=1 :sout=#transcode{vcodec=h264,vb=800,scale=0.5,acodec=mpga,ab=128,channels=2,samplerate=44100}:rtp{dst=224.0.0.0,port=5004,mux=ts,sap,name=ARD_Sender} :sout-all :sout-keep


    Damit werden dann vier Sender angezeigt, den Ton hat man ab er nur von einem. Über die Menüoption Audio->Audiospur kann man aber zwischen den Sendern auch den Ton umschalten.


    MfG, kodela

  • Hallo Kodela,


    entschuldige, wenn ich Deine Antwort nicht gründlich lese.


    Zum besseren Verständnis werde ich versuchen, meine Fragen etwas detaillierter zu erläutern.


    Auf meinem Server ist ein USB DVB-T-Empfänger angeschlossen. Vier DVB-T Programmen (in einem DVB Transportstrom/Multiplex, Service-IDs: 16387, 16426, 19970, 19973), welche alle auf der Frequenz 554 MHz (Kanal 31) verbreitet werden, möchte ich jeweils als eigenen Videostream in eine html-Seite auf einem Client-PC einbinden.


    Die html-Seite ist eine Tabelle mit z.B. 3×3 Feldern (drei Spalten, drei Zeilen). In jedes Feld der Tabelle wird ein anderer Videostream als Link eingebunden und alles wird über einen Internetbrowser angezeigt. Ich bekomme eine Art TV-Mosaic bzw. Multiview-Ansicht, die vor allem auf Internetquellen zurückgreift. Zusätzlich möchte ich vier DVB-T Programme in das TV-Mosaic einfügen. Die Tonwiedergabe wird nicht benötigt, stört aber auch nicht. Die html-Seite ist schon fertig.


    Auf dem Server mit Windows 7 (64-bit Betriebssystem) nutze ich den VLC-Player, Version 2.1.5 um die vier TV-Programme (DVB Transportstrom) zu empfangen. Die Treiber für den DVB-T Empfänger sind installiert, so dass der VLC-Player auf die Hardware zugreifen kann (Menü: Medien/Aufnahmegerät öffnen.../Aufnahmemodus/TV-digital und in den Optionen Frequenz und Bandbreite auswählen, im Menü: Wiedergabe/Programm kann ich alle im DVB-T Transportstrom/Multiplex enthaltenen Programm öffnen).


    Wenn ich den Anleitungen zum Erstellen eines http- oder rtp-Streams mit dem VLC-Player folge und im Programmfenster "Streamausgabe", die Option "alle Elemantarstreams streamen" auswähle, werden auf dem Client-PC mit Eingabe einer IP-Adresse alle Videostreams im VLC-Player gleichzeitig wiedergeben. Der VLC-Player öffnet automatisch vier Programmfenster mit jeweils einem anderen Fernsehprogramm. Die Tonwiedergabe erfolgt nur von einem Videostrem. Der fehlende Ton stört mich nicht.


    Ich würde gern diese parallel geöffneten Programmfenster verwenden, weiß aber nicht, wie ich darauf einzeln (je Video eine IP-Adresse) zugreifen kann, da nur eine IP-Streaming-Adresse eingegeben wird.


    Beispiel-Text Ausgabe für einen rtp-Multistream aller im DVB-T-Multiplex enthaltenen Elementarstreams:
    :sout=#transcode{vcodec=mp2v,vb=800,acodec=mpga,ab=128,channels=2,samplerate=44100}:rtp{dst=224.0.0.0,port=5004,mux=ts,sap,name=bbc} :sout-all :sout-keep


    Das gleiche erfolgt, wenn ich den von Dir vorgeschlagenen Kommandozeilenstring ausführe. Der VLC-Server streamt zeitglich vier Videoprogramme. Der Unterschied von beiden Beispielen ist, mit dem von Dir vorgeschlagenen Kommandozeilenstring werden die Videos mit H.264 codiert und die Bildgröße wird um die Hälfte verkleinert.


    Mein Problem ist noch nicht gelöst. Ich weiß nicht, wie ich auf die einzelnen Videostreams zugreifen kann (per IP-Adresse oder ...).


    Das im folgenden Link aufgeführte Beispiel bietet möglicherweise eine Lösung (1× Instanz VLC-Player auf dem Server, mehrerer Streaming-Links für den Client) unter Linux, wie ich sie für Windows suche.
    https://evilshit.wordpress.com…le-dvb-t-tuner-using-vlc/

    Wenn ich mehrere VLC-Server-Instanzen gleichzeitig auf dem Server ausführe, greifen alle auf den einen USB DVB-T Empfänger zu. Meine Versuche, zwei Instanzen des VLC-Players per Komandozeilenstring auf dem Server zu starten klappen. Die Videostreams trenne ich mit unterschiedlichen IP-Adressen (224.0.0.0:5004, 244.0.0.1:5004) und den jeweiligen Service IDs.


    Auf dem Client-PC konnte ich die beiden IP-Adressen nicht gleichzeitig wiedergeben. Es lief immer nur ein Videostream, der andere Videostrem blieb stehen.


    Wie kann ich anstelle der Option ":sout-all" parallel vier einzeln Videostreams wiedergeben, so dass diese per IP-Adresse einzeln vom Client-PC wiedergegeben werden?


    Wie kann ich die zeitgleich gestreamten Elementarstreams auf dem Client-PC voneinander trennen?


    Ich hoffe es gibt ein geeignete Lösung und Du hast noch genügend Geduld mit einem nicht gründlichen Leser.


    Das Mosaic-Plug-in könnte vielleicht eine Alternative sein.
    http://addons.videolan.org/con…ith+mosaic?content=163174


    MfG
    Thomas

  • Hallo Thomas,


    Zu Deinen Fragen:


    Quote

    Auf dem Client-PC konnte ich die beiden IP-Adressen nicht gleichzeitig wiedergeben. Es lief immer nur ein Videostream, der andere Videostrem blieb stehen.


    Warum? - Ein Client kann eben nur einen Stream empfangen.


    Quote

    Wie kann ich anstelle der Option ":sout-all" parallel vier einzeln Videostreams wiedergeben, so dass diese per IP-Adresse einzeln vom Client-PC wiedergegeben werden?


    Indem Du vier Instanzen des VLC startest, jede mit einem Auftrag.


    Quote

    Wie kann ich die zeitgleich gestreamten Elementarstreams auf dem Client-PC voneinander trennen?


    Was verstehst Du darunter, einen Stream mit vier gepackten Videostreams oder was sonst?


    Wenn Du darunter das Streamen eines Transponder-Streams meinst, so wie in meinem letzten Beispiel, dann konnte ich mit vier Instanzen des VLC jeweils diesen Stream öffnen und für jede Instanz festlegen, welches der vier Videos wiedergegeben werden soll. Dafür musste ich nach dem Start einer Instanz und der Wiedergabe aller vier Videos über die Menüoption Video->Videospur die Wiedergabe zunächst deaktivieren und danach über das selbe Menü eines der vier dort angezeigten Videos aktivieren.


    Nun, so umständlich willst Du das nicht, aber mein Vorgehen zeigt, dass es grundsätzlich möglich ist, vier gepackte Videos mit einem Stream zu Streamen und mit vier Instanzen jeweils auf eines dieser Videos zuzugreifen. Wie dies weniger umständlich mit Parametern gelöst werden kann, weiß ich nicht. Das müsste sich aber herausfinden lassen.


    Mit Sicherheit ist es auch möglich, für jede dieser Instanzen den Ort der Ausgabe gesondert festzulegen.


    Quote

    Das Mosaic-Plug-in könnte vielleicht eine Alternative sein.


    Ja, das könnte eine Lösung sein. Ich habe allerdings mit diesem AddOn keine Erfahrung.


    MfG, kodela

  • Hallo Kodela,


    ich kann den von Dir vorgeschlagenen Weg Menüoption Video->Videospur nicht umsetzen. Kannst Du das bitte noch etwas detaillierter, step by step erläutern.


    In den letzten Tagen habe ich viel über VLC-Konfigurationen mit Skripts... gelesen und selbst experimentiert.
    Dabei bin ich meinem Ziel vielleicht etwas näher gekommen. Mit dem Windows -Editor habe ich Dein Kommandozeilenskript in eine Batch-Datei (z.B. VLC.bat) gespeichert und weitere Versuche durchgeführt.


    Das Beispiel (rtp-Multicast-Stream) läuft auf dem Server.


    #Begin batch file
    cd c:\program files (x86)\videolan\vlc
    vlc dvb-t://frequency=554000000 :program=16387 :bandwith=0 :sout=#transcode{vcodec=mp2v,vb=800,scale=0.5,acodec=mpga,ab=128,channels=2,samplerate=44100}:rtp{dst=224.0.0.0,port=5004,mux=ts,sap,name=BBC} :sout-all :sout-keep


    Beispiel (http-Stream):


    #Begin batch file
    cd c:\program files (x86)\videolan\vlc
    vlc dvb-t://frequency=554000000 :program=16387 :input-record-native=0 :live-caching=1000 :sout=#transcode{vcodec=mp2v,vb=800,scale=0.5,acodec=mpga,ab=128,channels=2,samplerate=44100}:http{dst=:8080,mux=ts,sap,name=BBC} :sout-all :sout-keep


    Auf dem Client gebe ich im VLC Menü/Medien/Netzwerkstream öffnen... die IP-Adresse "http://xxx.xxx.xxx.xxx:8080" des VLC Servers bzw. die Multicast-IP-Adresse ein. Die Wiedergabe des rtp-Multicast-Stream wird im angefügten Bildschirmausdruck (siehe "DVB-T-Stream-sout-all.JPG") gezeigt. Der VLC-Player öffnet automatisch vier Videofenster, mit allen im DVB-Transportstrom enthaltenen vier Fernsehprogrammen (SID). Drei der Fenster werden mit "Direct 3D output" bezeichnet und sind für mich nicht einzeln greifbar (als IP-Adresse). Nur in einem Fenster ist die Original IP-Adresse und Menü- sowie Statuszeile des VLC-Player zu sehen. Die Tonwiedergabe erfolgt von einem Hörfunkprogramm, das zu drei im DVB-T Multiplex verbreiteten Angeboten gehört.


    Kann man irgendwie die drei "Direct 3D output"-Fenster "greifbar" (z.B. IP-Adresse oder Service ID,...) machen?


    Meine weiteren Versuche haben das folgende Ergebnis geliefert. Ich kann die im Multiplex enthaltenen Fernsehprogramme über unterschiedliche IP-Ports einzeln greifen (siehe "DVB-T-Stream-sout-all_2.JPG").


    Auf dem Server wird folgende Batch-Datei ausgeführt.


    #Begin batch file
    cd c:\program files (x86)\videolan\vlc
    vlc dvb-t://frequency=554000000 :dvb-adapter=0 :bandwidth=8 :sout=#transcode{vcodec=mp2v,vb=800,scale=0.5,acodec=mpga,ab=128,channels=2,samplerate=44100} :sout=#duplicate{dst=std{access=http,mux=ts,sap,name=bbc,dst=:8080}select="program=16387",dst=std{access=http,mux=ts,sap,name=bibeltv,dst=:8081}select="program=16426",dst=std{access=http,mux=ts,sap,name=LF,dst=:8082}select="program=19970",dst=std{access=http,mux=ts,sap,name=infotv,dst=:8083}select="program=19973"} :sout-all


    Der Bildschirmausdruck (siehe "DVB-T-Stream-sout-all_2.JPG") auf dem Client-PC zeigt dass jedes VLC-Fenster mit einem anderen IP-Port ein anderes Fernsehprogramm wiedergibt. Allerdings ist ein Programm doppelt.
    Der nachteil ist, dass jedes Fernsehprogramm automatisch drei "Direct 3D output"-Fenster mit öffnet, die ich nicht brauche, da diese für mich nicht greifbar sind.


    Hast Du weitere Ideen die zu meinem Ziel führen können?


    MfG
    Thomas

  • Hallo Thomas,


    Du hast gefragt:


    Quote

    Wie kann ich die zeitgleich gestreamten Elementarstreams auf dem Client-PC voneinander trennen?


    Darauf meine Frage:


    Quote

    Was verstehst Du darunter, einen Stream mit vier gepackten Videostreams oder was sonst?


    Diese Frage solltest Du beantworten, Ich weiß nicht, was Du darunter verstehst und habe deshalb weiter geschrieben:


    Quote

    Wenn Du darunter das Streamen eines Transponder-Streams meinst, so wie in meinem letzten Beispiel, dann konnte ich mit vier Instanzen des VLC jeweils diesen Stream öffnen und für jede Instanz festlegen, welches der vier Videos wiedergegeben werden soll. Dafür musste ich nach dem Start einer Instanz und der Wiedergabe aller vier Videos über die Menüoption Video->Videospur die Wiedergabe zunächst deaktivieren und danach über das selbe Menü eines der vier dort angezeigten Videos aktivieren.


    Um Deine Frage zu beantworten, wie der von mir (vorstehend) vorgeschlagene Weg umzusetzen sei, müsste ich weiter spekulieren, dass Du mit Deiner ursprünglichen Frage das Streamen aller im DVB-Transportstrom enthaltenen Einzelstreams meinst. Das will ich aber nicht, da wir nur weiter aneinander vorbeireden würden. Was Du übrigens ein Vorschlag nennst, war keineswegs ein solcher, das war nur eine Möglichkeit.


    Aber trotzdem, wenn Du vom Client gleichzeitig vier Sender angezeigt bekommst, kannst Du über die Menüoption Video - Videospur - Deaktivieren alle vier Fenster schließen. Anschließend kannst Du zum Beispiel über Video - Videospur - Tiel 1 zum Beispiel ausschließlich das Programm 1 wiedergeben lassen. Wenn Du jetzt eine weitere Instanz des VLC öffnest, kannst Du das Spiel wiederholen, aber diesmal über Video - Videospur - Tiel 2 das Programm 2 wiedergeben und dann mit einer dritten Instanz das Programm 3 und der vierten das Programm 4 wiedergeben lassen. Jedes der Videofenster ist frei positionierbar.


    Wenn man jede Instanz über eine eigene Batchdatei startet, kann auch die Ausgabeposition individuell festgelegt werden.


    MfG, kodela

  • Auf dem Client gebe ich im VLC Menü/Medien/Netzwerkstream öffnen... die IP-Adresse "http://xxx.xxx.xxx.xxx:8080" des VLC Servers bzw. die Multicast-IP-Adresse ein.


    Hallo Thomas,


    warum xt Du eigentlich Deine IP-Adresse 192.168.201.112 immer aus, wenn Du sie dann auf Deinen Bilder zeigst?


    MfG, kodela

  • Hallo Kodela,


    heute habe ich mal wieder Zeit für eine Antwort.


    1) zur IP-Adresse:
    Ich kann die IPv4-Adresse auch mit anderen Zeichen (z.B. http://***.***.***.***:8080) beschreiben, wenn das schöner aussieht. Mir geht es aber darum zu beschreiben, dass Jeder, der den hier eingestellten Kommandozeilenstring selbst ausprobiert, nicht vergessen darf, die IP-Adresse seines Computers bzw. die Multicast-IP-Adresse, die Frequenz des vor Ort verbreiteten DVB-T Angebotes und die Service-IDs der Fernsehprogramme anpassen muss. Mein als Server arbeitender Computer nutzt eine IPv4-Adresse aus dem privaten bzw. lokalen Adressbereich, der im eigenen LAN eingesetzt wird.


    2) zum Thema:
    Ich habe meine Hausaufgaben gemacht und mein Ziel erreicht, mit einer Batch-Datei und per Doppeklick gestartetem VLC-Player (eine Instanz) die vor Ort empfangen DVB-T Fernsehprogramme als http-Stream mit unterschiedlichen Ports auf einem Client-PC mit richtigem Bild unf Ton wiederzugeben (vier Instanzen), ohne dass drei zusätzliche "direct 3D output"-Fenster neben jedem Stream geöffnet werden.


    Nachteil meiner Lösung:
    Die Transcodierungseinstellungen für Audio und Video werden nicht umgesetzt.
    Ich kann darauf verzichten, da die MPEG-2 Signale mir für die Weiterverwendung ausreichen.


    Programmname Service-ID Port
    BBC World 16387 8080
    Bibel TV 16426 8081
    Leipzig Fernsehen 19970 8082
    info tv leipzig 19973 8083


    Auf dem Server wird folgende Batch-Datei ausgeführt.


    #Begin batch file
    cd c:\program files (x86)\videolan\vlc
    vlc dvb-t://frequency=554000000 :dvb-adapter=0 :bandwidth=8 :live-caching=1000 :sout=#transcode{vcodec=h264,vb=800,scale=0.5,acodec=mpga,ab=64,samplerate=44100} :sout=#duplicate{dst=std{access=http,mux=ts,sap,name=bbc,dst=:8080},select="program=16387":sout=#transcode{vcodec=h264,vb=800,scale=0.5,acodec=mpga,ab=64,samplerate=44100},dst=std{access=http,mux=ts,sap,name=bibeltv,dst=:8081},select="program=16426":sout=#transcode{vcodec=h264,vb=800,scale=0.5,acodec=mpga,ab=64,samplerate=44100},dst=std{access=http,mux=ts,sap,name=LF,dst=:8082},select="program=19970":sout=#transcode{vcodec=h264,vb=800,scale=0.5,acodec=mpga,ab=64,samplerate=44100},dst=std{access=http,mux=ts,sap,name=infotv,dst=:8083},select="program=19973"} :sout_all :sout-keep


    Du hattest mir zu Beginn des beitrages Hausaufgaben mitgegeben. Jetzt erlaube ich mir an dieser Stelle Dir die Hausaufgabe mit zu geben, mit der Bitte, die Transcodiereinstellungen in der obigen Batch-Datei so anzupassen, dass diese vom VLC-Player umgesetzt werden und danach den korrigierten und fehlerbereinigten Code in diesem Beitrag zu veröffentlichen. Dann wäre eine vollständig Lösung erreicht und bestimmt den vielen Beitragsverfolgern geholfen.


    Vielen Dank für Deine Hilfe, die Geduld und schnellen Rückmeldungn.


    Mein Ziel ist erreicht. Die hier gezeigte Lösung ist aber noch nicht vollständig wegen fehlender Transcodierungs-Optionen.

    Mit besten Grüßen
    Thomas

  • Hallo Thomas,


    Dein Ziel ist erreicht? Na ja, dann ist ja alles in Butter. Ich habe da allerdings so meine Zweifel.


    Ich will jetzt nicht spekulieren, was bei Dir funktioniert und was nicht, welcher Code von Dir ist und welcher von irgend woher kopiert wurde.


    Starte doch einmal den VLC mit folgendem Kommandozeilenstring:


    vlc dvb-t://frequency=554000000 :select="program=19970"


    Was passiert, wird hier Leipzig-TV wiedergegeben oder BBC?


    Probiere es jetzt mit diesem Kommandozeilenstring:


    vlc dvb-t://frequency=554000000 :program=19970


    Ist es jetzt Leipzig-TV? - Probiere beide Strings mit allen vier Service IDs.


    Bevor ich mich weiter zum Thema äußere, warte ich Deine Antwort ab.


    MfG, kodela

  • Hallo Kodela,


    Danke dass Du Dir zeit nimmst, dass Problem mit dem Transcodieren noch zu lösen. Der garantiert fehlerbehaftete Code ist nach und nach gewachsen und setzt sich auch aus anderen Beispielen zusammen (https://forum.videolan.org, https://wiki.videolan.org/Docu…g_Using_the_Command_Line/ oder Suchergebnisse im Web).


    Mein Weg herauszufinden, ob ein Code funktioniert ist folgender.
    1) Kommandozeilenstring als Batch-Datei starten.
    2) Danach im VLC-Player die Wiedergabeliste speichern und im Editor ansehen.


    Für meine beschriebene Lösung sieht die Wiedergabeliste (*.xspf] folgendermaßen aus.


    <?xml version="1.0" encoding="UTF-8"?>
    <playlist xmlns="http://xspf.org/ns/0/" xmlns:vlc="http://www.videolan.org/vlc/playlist/ns/0/" version="1">
    <title>Wiedergabeliste</title>
    <trackList>
    <track>
    <location>dvb-t://frequency=554000000</location>
    <duration>900000</duration>
    <extension application="http://www.videolan.org/vlc/playlist/0">
    <vlc:id>0</vlc:id>
    <vlc:option>dvb-adapter=0</vlc:option>
    <vlc:option>bandwidth=8</vlc:option>
    <vlc:option>live-caching=1000</vlc:option>
    <vlc:option>sout=#transcode{vcodec=h264,vb=800,scale=0.5,acodec=mpga,ab=64,samplerate=44100}</vlc:option>
    <vlc:option>sout=#duplicate{dst=std{access=http,mux=ts,sap,name=bbc,dst=:8080},select=program=16387:sout=#transcode{vcodec=h264,vb=800,scale=0.5,acodec=mpga,ab=64,samplerate=44100},dst=std{access=http,mux=ts,sap,name=bibeltv,dst=:8081},select=program=16426:sout=#transcode{vcodec=h264,vb=800,scale=0.5,acodec=mpga,ab=64,samplerate=44100},dst=std{access=http,mux=ts,sap,name=LF,dst=:8082},select=program=19970:sout=#transcode{vcodec=h264,vb=800,scale=0.5,acodec=mpga,ab=64,samplerate=44100},dst=std{access=http,mux=ts,sap,name=infotv,dst=:8083},select=program=19973}</vlc:option>
    <vlc:option>sout_all</vlc:option>
    <vlc:option>sout-keep</vlc:option>
    </extension>
    </track>
    </trackList>
    <extension application="http://www.videolan.org/vlc/playlist/0">
    <vlc:item tid="0"/>
    </extension>
    </playlist>


    Nun zu Deinen aktuellen Fragen (SID mit und ohne Anführungszeichen). Laut Dokumentation sollte man unter Windows mit Anführungszeichen arbeiten. Siehe Link
    http://www.videolan.org/doc/play-howto/en/ch04.html
    Beide von Dir vorgeschlagenen Codes ergeben nach mehrmaliger Ausführung ein zufälliges Ergebnis. Dabei werden auch die drei Hörfunkprogramme (the wave SID: 24614, Radio Leipzig SID: 28161, egoFM SID: 28166) in die Wiedergabe einbezogen, die neben den vier Fernsehprogrammen auf der gleichen Frequenz verbreitet werden.


    Mehr Erfolg habe ich mit dem nachfolgenden Code-Beispielen.


    vlc dvb-t://frequency=554000000 :sout=#duplicate{dst=display,select=program=16426} :sout-keep
    vlc dvb-t://frequency=554000000 :sout=#duplicate{dst=display,select="program=16426"} :sout-keep


    Dabei scheint es egal zu sein ob mit oder ohne Anführungszeichen.


    Beste Grüße
    Thomas

  • Hallo Thomas,


    es wäre vernünftig, das Problem in kleinsten Schritten anzugehen. Meine zwei zu testenden Parameterstrings sollten dazu dienen und Dir vor allem zeigen, dass der VLC unsinnige Parameter einfach ignoriert. Ein solch unsinniger Parameter ist "select". Dass Du immer noch beharrlich diesen Parameter einsetzt, sagt viel über die Art und Weise Deines Vorgehens aus. Diesen Parameter kennt der VLC nicht und ignoriert ihn ganz einfach.


    Es ist auch meistens nicht sinnvoll, in alten Veröffentlichungen zum VLC sein Heil zu suchen. Ein wesentlich besserer Weg ist, ein Problem in einzelne Teilprobleme zu zerlegen und diese schrittweise über das Interface zu lösen und sich dabei auf die Vorgehensweise des VLC zu konzentrieren. Das schließt nicht aus, dass man sich diverse Informationen anderweitig besorgen muss.


    Ich will dies an einem kleinen Beispiel demonstrieren. Für Dein Problem soll ein bestimmter TV-Sender von PC A ins Heimnetz gestreamt und von PC B aufgenommen und angezeigt werden. Im Thema Häufig gestellte Fragen zum VLC hier in diesem Forum findet man dazu Informationen. Wie aber stellt man sich dafür einen Kommandozeilenstring zusammen. Nun zu meinem Vorgehen:


    In den Informationen zum TV-Empfang hier im Forum, aber auch auf diversen Internetseiten finde ich heraus, dass für die Wiedergabe eines bestimmten TV-Senders die Sendefrequenz und die Service ID benötigt werden und erfahre dort im Abschnitt Einen Sender einrichten auch, wie diese Informationen dem VLC zu übergeben sind. Ich kann auch herausfinden, wie man vorgehen muss, um ins Heimnetz zu streamen.


    Mit diesem Wissen versuche ich es erst mit der Wiedergabe eines bestimmten Senders. Gelingt dies, kann ich in einem zweiten Schritt vom Interface aus versuchen den TV-Sender ins Heimnetz zu streamen. In beiden Fällen komme ich zu dem Dialog Medien öffnen und in beiden Fällen (Aufnahmegerät öffnen und Netzwerk) und muss ich mir Mehr Optionen anzeigen lassen.


    In diesem Bereich zeigt mir der VLC die zu verwendende MRL und die mit zu übergebenden Optionen an. das könnte so aussehen:


    vlc-forum.de/wcf/attachment/520/


    Ich brauche jetzt nur die MRL und die Optionen dazu zu kopieren und habe meinen Parameterstring für die Wiedergabe oder das Streamen eines bestimmten TV-Senders. Das sieht dann so aus:


    dvb-t://frequency=666000000:bandwidth=0 :dvb-adapter=0 :live-caching=300 :program=32


    Für die Wiedergabe alleine reicht dies schon aus, einfach eine Kommandozeile mit dem Aufruf des VLC und dem Parameterstring.


    Wenn man diesen TV-Sender ins Netz streamen will, muss man dafür das Ziel und das Profil einstellen. ich mache es kurz und komme am Ende meiner Einstellungen zum Dialog Streamausgabe. Auch hier davon ein Bild:


    vlc-forum.de/wcf/attachment/521/


    Von dort kopiere ich mir den generierten Stream-Ausgabe-String:


    :sout=#transcode{vcodec=h264,vb=1500,scale=Automatisch,acodec=mpga,ab=128,channels=2,samplerate=44100}:rtp{dst=224.1.1.1,port=5004,mux=ts,sap,name=Das_Erste} :sout-keep


    Wenn meine Eingabe über das Interface des VLC funktioniert, dann habe ich auch alles, was ich für das Streamen eines TV-Senders über eine Batchdatei als Kommandozeilenstring benötige. Das sieht dann so aus:


    Code
    1. vlc dvb-t://frequency=666000000:bandwidth=0 :dvb-adapter=0 :live-caching=300 :program=32 :sout=#transcode{vcodec=h264,vb=1500,scale=Automatisch,acodec=mpga,ab=128,channels=2,samplerate=44100}:rtp{dst=224.1.1.1,port=5004,mux=ts,sap,name=Das_Erste} :sout-keep


    So solltest auch Du vorgehen. Solange Du aber an Deiner Vorgehensweise nichts änderst, klinke ich mich aus diesem Thema einmal aus. Ich halte es für reine Zeitverschwendung, mich an Deinen Probier-Aktionen zu beteiligen.


    MfG, kodela

  • Ich will hier noch einige Beispiele für erfolgreich erprobte Batch-Dateien anfügen. Diese sind für eine 64-Bit- Version des VLC Players vorgesehen (Pfadangabe des VLC-Installationsortes ist in der 32Bit-Version anders - "c:\program files (x86)\videolan\vlc").


    Wer im Raum Halle / Leipzig wohnt, kann die im Code enthaltenen Frequenzen und Service-IDs der Fernsehprogramme ohne Änderungen übernehmen.
    Die angefügten Batchdatei bearbeitet man aus dem [Kontextmenü / bearbeiten] bzw. rechte Maustaste "bearbeiten".


    1) Bitte die Dateiendungen *.txt in *.bat umbenennen. Die Port-Adressen und die Server IP-Adresse bitte ebenso kontrollieren.


    2) Die Datei "TV-Mosaic.txt" bitte in "TV-Mosaic.html" umbenennen. Diese ist für die TV-Mosaic-Darstellung auf dem Client-PC vorgesehen. Hier muss die eigene Server-IP-Adresse des VLC-Players eingetragen werden. (Code-Bsp.: <embed src="http//192.168.xxx.xxx:8084 type="application/x-vlc-plugin" name="VLC" width="358" height=268"><embed/>).


    Im Dauerbetrieb des VLC als Streamingserver habe ich festgestellt, dass dieser stetig mehr Arbeitsspeicher in Anspruch nimmt, so dass nach 2 bis 3 Tagen das Windows Betriebssystem meldet, nicht genügend physikalischer Speicher. Für einen Dauerbetrieb sollte man den den VLC Streamingserver automatisch starten und beenden lassen.
    Windows Taskplaner (http://windows.microsoft.com/d…hedule-task#1TC=windows-7) oder wie Kodela vorschlägt:
    aborange sceduler (http://www.vlc-forum.de/index.…programmiert-aufzeichnen/)


    Grüße
    Thomas

  • Hallo Thomas,


    was hat Deine schön gemacht Programmauswahl (TV-Mosaic_9.html) mit dem Titel dieses Themas "DVB-T Empfang und paralleler Stream der Programme" zu tun? Hier werden ja nur Sender aus dem Netz gezeigt.


    Und was erreichst Du mit den Batchdateien, kannst Du das erklären? Denkst Du, damit kann man die vier TV-Programme als einzlene Adressen abgreifen um sie in einer HTML-Seite einzubinden?


    Übrigens leitet das Doppelkreuz (#) keine Kommentarzeile ein. Statt "#Begin batch file" muss man ":Begin batch file" schreiben.


    MfG, kodela

  • Hallo Kodela,


    die html-Datei "TV-Mosaic_9.html" wird in einer elektronischen Anzeigetafel (HDTV-Auflösung im Hochformat, 1920×1080 Bildpunkte, keine Tonwiedergabe) mit dem Webbrowser Mozilla Firefox (Vollbild = [F11]-Taste) wiedergegeben und von eimem Computer mit Intel Core 2 Duo (1,8 GHz, 1 GB RAM) angesteuert. Die Anzeigetafel mit Computer befinden sich im gleichen LAN, wie der VLC-Server (Beispiel IP-Adresse meines VLC-Servers = 192.168.201.130). Im praktischen Einsatz habe ich die html-Datei um Text/Informations-Bereiche (html-Tabellen) noch erweiter.


    Mit der Datei "TV-Mosaic_9.html" werden maximal 9 Fernsehprogramme wiedergegeben. Ein Teil der Live-Streams wird aus dem Internet entgegengenommen, der andere Teil wird aus dem LAN (Bezeichnung "DVB-T Port 808x" in der html-Datei) ergänzt. Konkret werden auf einem zweiten Computer im LAN bis zu vier DVB-T Programme mit VLC empfangen und per IP gestreamt. Die Beispiel Batch-Dateien sind dafür vorgesehen. Mit den Batch-Dateien kann ich vier TV-Programme in einer VLC-Instanz gleichzeitig streamen und einzeln über unterschiedliche IP-Ports in der elektronischen Anzeigetafel abgreifen und in der html-Datei "TV-Mosaic_9.html" unter der Bezeichnung "DVB-T Port 808x" wiedergaben (html-Quellcode: <embed src="http://192.168.xxx.xxx:808x" Type="application/x-vlc-plugin" name="VLC" width="358" height="268"></td>). Die Port-Nummern sind aus den Batch-Dateien zu übernehmen.


    In der Tabelle habe ich leider fehlerhafte html-Codes übersehen. Bitte den Quellcode korrigieren!
    <embed src="http://192.168.201.130:8087" type="application/x-vlc-plugin" name="VLC" width="358" height=268"><embed/></td>
    Im obigen Code-Beispiel ist das html-Element <embed/> zu löschen!


    Damit man beim Öffnen der html-Datei zumindest etwas zu sehen bekommt, habe ich einige Internet-Streams eingefügt. Die leeren Bereich "DVB-T Port 808x" der html-Datei können mit eigenen Streams von DVB-T Programmen gefüll werden. Ein Intel Core 2 Duo Prozessor, wie oben beschrieben, wird zu nahezu 100 Prozent ausgelastet, wenn 9 TV-Programme wiedergegeben werden, so dass die TV-Wiedergabe zum Teil ruckelt.


    Ein Computer mit Intel Core i7 mit 2,93 GHz wird bei der Wiedergabe des TV-Mosaic nur zu ca. 16 bis 18 Prozent ausgelastet.


    Der VLC-Server braucht mit einem Intel Core i7 kaum Rechenleistung. Allerdings läuft der Arbeitsspeicher nach mehreren Stunden voll (mit den Beispiel-Batch-Dateien), so dass man den VLC-Server beenden und neustarten muss. Dafür ist ein Taskplaner bzw. eine Sceduler-Anwendung hilfreich.


    Mir gefällt das TV-Mosaic noch mehr, wenn man im Quellcode <table border="1" width="1076" align="center"> die Änderung border="1" in border="0" vornimmt. Ich bearbeite die html-Dateien ebenso mit dem Editor "Notepad" unter Windows. Die html-Datei nutzt ein VLC-Plugin für den Webbrowser. Ich nutze den Webbrowser Mozilla Firefox.



    Ich weiß, dass die Batch-Dateien Dir nicht gefallen, weil ich veralteten Code (select="program=515") verwende. Diese Informationen habe ich vom vlc wiki (bis 2006 gepflegt) entnommen (https://wiki.videolan.org/Docu…g_Using_the_Command_Line/). Leider habe ich keine aktuelle Streaming-Dokumentation gefunden. Deine bisherigen Antworten waren eher entmutigend und von der Tendenz, es geht so nicht.
    Vielleicht hilft die hier beschriebene Lösung eine neue, auf aktuellen Skript-Code basierende Lösung zu erarbeiten. Das Transcodieren der Videodaten (Scalierung reicht aus) könnte Rechenleistung und Datenraten einsparen, ist aber nicht notwendig. Das Herzstück der Lösung ist die elektronische Anzeigetafel mit verschiedenen Inhalten.


    Wenn gewünscht, kann ich weitere Signalquellen für lokale TV-Programme hier ergänzen.


    MfG, Thomas