VLC als SAT>IP Client sendet kein KEEP-ALIVE Signal

  • Dieses Thema ist scheinbar schon recht alt, aber eine Lösung gibt's wohl immer noch nicht.

    Ich habe 2 SAT>IP Server. Mit dem einen ist alles in Ordnung, das heißt, der VLC Player spielt den angeforderten Stream klaglos ab. Von dem anderen SAT-IP Server wird der Stream nach exakt 60 Sekunden vom VLC Player unterbrochen. Wende ich jedoch eine andere SAT>IP Client Software an, ist auch die Streamwiedergabe von dem SAT-IP Server durchgehend in Ordnung, mit dem der VLC Player das Problem hat. Es fehlt also offenbar ein Keep-Alive Signal vom VLC-Player, welches der SAT-IP Server benötigt. Das Internet ist voll von Einträgen zu diesem Thema, viele davon auch schon mehrere Jahre alt. Es soll, so wird dort berichtet, mit einem GET_PARAMETER Befehl das fehlende Signal übermittelt werden.


    Das Problem tritt auf mit der jeweils neuesten Version des VLC-Players 64bit unter Win10/64bit auf dem PC, VLC-Player 32bit unter Win10/32bit auf dem Tablet sowie unter Android 7.0 mit dem VLC-Player für Android bei Zugriff auf den SAT>IP Receiver Xoro 8670 LAN.

    Mit anderen öffentlich zugänglichen Streams hat der VLC-Player unter Win10 oder Android kein Problem.


    Die Anforderung des Streams in einem M3U-File für den Programmplatz 1 sieht so aus:


    #EXTM3U

    #EXTINF:0,1. Das Erste HD

    rtsp://192.168.2.207/?src=1&freq=11494&pol=h&ro=0.35&msys=dvbs2&mtype=8psk&plts=on&sr=22000&fec=23&pids=0,17,18,5100,5101,5102,5104


    Das ist die IP-Adresse in meinem Heimnetz für der SAT-Receiver, welcher SAT-IP fähig ist und als Server in mein Heimnetz streamen kann.

    Irgendwelche Einstellungen lassen sich am SAT-Receiver nicht vornehmen, ein WEB-Interface ist darin nicht enthalten, nur die Möglichkeit für SAT-IP An oder Aus.

    Nahezu die gleiche IP-Adresse mit am Ende .206 und exakt dem gleichen String verwende ich für den anderen SAT-Receiver, der kein Keep-Alive Problem hat.


    Ich verstehe nicht, warum nur der VLC-Player damit ein Problem hat, während mit anderer Client-Software das Problem nicht auftritt.


    Jetzt meine Frage:

    Wo und in welcher Form bringe ich den Befehl zum Erhalt des Streams im String unter?

    Wie sieht dieser Befehl aus? Ist es der "GET_PARAMETER" Befehl?

  • Hallo radioart,


    ich versuche mal einige Informationen zu bündeln.


    Im Handbuch zum "Xoro 8670 LAN" (HD DVB-S2 Receiver) findet man Hinweise (Seite 32) zur Sat>IP Funktion des Gerätes.

    - https://images-eu.ssl-images-a…/images/I/B1Sp-hezYmS.pdf


    a) Zur Verwendung von SAT-IP muss der Receiver per Netzwerkkabel mit Ihrem lokalen Netzwerk verbunden sein.

    b) Es werden keine Antennenkonfigurationen mit DiSEqC oder mehrere Satelliten unterstützt.

    c) Es kann nur ein SAT>IP-Client zur gleichen Zeit mit dem Receiver verbunden werden.

    d) Der Receiver hat nur einen Tuner. Wird am SAT>IP-Client der Sender gewechselt, muss der Receiver auch den Sender umschalten.

    e) Während Aufnahme, Timer-Aufnahme, Timeshift oder Wiedergabe von Dateien und Aufnahmen steht SAT-IP nicht zur Verfügung.

    f) Sender mit hohen Bitraten (4K-Sender usw.) kann der Receiver nicht über SAT-IP streamen.

    g) Der Receiver kann nur Live-Programm ins Netzwerk streamen. PVR-Aufnahmen oder anderen Dateien auf USB-Laufwerken können nicht ins Netzwerk übertragen werden.


    Kann man die obigen Bedingungen bei deiner Feststellung, dass der VLC-Player nach 60 Sekunden die Wiedergabe abbricht, ausschließen?


    Der VLC-Player wird als Sap>IP Client aufgelistet.

    - Link: http://www.satip.info/products/Software


    Es gibt eine englischsprachige Anleitung, die anhand von Bildschirmausdrucken die Sat>IP-Wiedergabe mit dem VLC-Player (3.0.0) beschreibt.

    - http://www.satip.info/sites/sa…wto_satip_with_vlc_v2.pdf

    Gehst du bei der Sat>IP-Wiedergabe genauso vor?


    Soweit meine ersten Ideen.


    MfG

    Thomas

  • Die englischsprachige Anleitung von satip.info hatte ich schon zuvor gelesen.

    Sie bezieht sich auf den VLC-Player 3.0.0 Vetinari in der englischen Version.

    Die letzte von mir installierte Version ist jedoch 3.0.4 Vetinari in der deutschen Version.

    In dieser Version kann ich die Einstellungen, wie sie ab Seite 8 aufgezeigt werden nicht vornehmen.

    In der Abbildung für die englische Version sind Einträge unter "Services discovery - UPnP" mittels SAT>IP Serverlist vorzunehmen.

    Die von mir installierte deutsche Version des VLC-Players zeigt mir unter "Widergabeliste - Diensterkennung" die Auswahl "Diensterkennungsmodule".

    Dieses Feld ist leer. Unter den VLC-Extensions oder PlugIns gibt es nichts zum Thema SAT>IP.


    Woher bekomme ich ein solches "Diensterkennungsmodul" ?

  • ok, jetzt habe ich es auch in der deutschen Version gefunden und die Astra-Liste ausgewählt.

    Es ändert leider nichts am Verhalten.

    Zuvor hatte ich im VLC den Button "Wiederholung" auf 1x gestellt, damit nach 60 Sekunden nicht der nächste Sender gewählt wird.

    Damit gibt es dann immer eine Unterbrechung für ca. 3-4 Sek und dann geht's weiter für die nächsten 60 Sek.

    Jetzt mit der ausgewählten Astra-Liste habe ich Wiederholung" auf AUS gestellt. Damit springt die Wiedergabe nun nicht mehr zum nächsten Sender, es ist aber immer noch eine kurze Unterbrechung alle 60 Sek vorhanden.


    Irgendwie unzufriedenstellend.

    Mich wundert nur, dass die Software SAT2IP aus dem Hause, welches auch den DVBViewer vertreibt, mit dem Xoro 8670 klar kommt. Das muss doch der VLC auch können!?

  • Hi

    >Mich wundert nur, dass die Software SAT2IP aus dem Hause, welches auch den DVBViewer vertreibt, mit dem Xoro 8670 klar kommt. Das muss doch der VLC auch können!?<


    Ganz einfach .

    DVBVIEWER und SAT2IP werden für Windows geschrieben

    VLC ist Open Source (kommt von Linux) und läuft nur "zufällig" auch (wenn auch anders) unter Windows .

    Also eigendlich nen "Glücksspiel" wenn VLC mal wieder alles auch unter Windows kann.

    MfG soyo


  • ich habe verstanden:

    wenn irgend etwas nicht so richtig funktioniert liegt es daran, dass der VLC-Player nur zufällig unter Windows funktioniert.


    Damit könnte man eigentlich fast jedes entstehende Problem erklären.


    Ich hätte gedacht, dass hier im Forum jemand Erfahrung mit dem VLC als Stream-Client hat und weiß, wie man einen Keep-alive Befehl im String unterbringt.

  • Hi

    Nun ja . Da VLC unter Windows immer "portable" ist , sollte es doch kein Problem sein .

    Deinen jetzigen VLC deinstallieren .

    VLC-Player 3.0.0 Vetinari in der englischen Version installieren .

    Den VLC Ordner dann wo anders hin kopieren (kopieren !! nicht verschieben)

    Den kopierten Ordner von VLC in z.B VLC30eng umbenennen .

    Die den engl. VLC wieder deinstallieren .

    Deinen jetzigen VLC wieder installieren .


    So. und wenn du SAT schauen willst , in den Ordner VLC30eng gehen , und dort die VLC.exe starten .


    So hab ich das mit verschiedenen Versionen von VLC immer unter Windows gemacht .

    Damals war's halt auch der Grund , das einige Versionen , nicht mehr so gingen , wie Vorgänger .


    MfG soyo

  • Es trat das Problem mit jeder von mir installierten Version auf.


    Nun nochmal meine Frage: Mit welcher Version funktionierts denn?


    Und auch nochmal die Frage an einen Experten zum Thema Keep-alive Befehl an den Server.

    Die SAT>IP Spezifikation habe ich gelesen - hier das Dokument .

    Wer weiß hat davon spezifische Kenntnisse?

  • Hallo radioart,


    mir sind keine manuellen Eingaben für eine "keep-alive"-Option im VLC-Player bekannt.


    Man findet in der Dokumentation der Kommandozeile alle relevanten Optionen für den VLC-Player.

    - Link: https://wiki.videolan.org/VLC_command-line_help/


    Ob in der Programmierung des VLC-Players für Sat>IP ein "keep-alive/ssdp:alive"-Signal implementiert wurde entzieht sich meiner Kenntnis.

    Hier wäre eine Anfrage im englischsprachigem Forum passender, wo auch die Entwickler hin und wieder reinschauen.

    - Link: https://forum.videolan.org/


    Man könnte prüfen, ob SSDP mit dem Port 1900 für die Adresse 239.255.255.250 in einer Firewall blockiert wird.


    Im Fehlerprotokoll könnten sich Hinweise finden lassen.

    Unter dem Menü / Werkzeuge / Meldungen die Ausführlichkeit auf die Stufe 2 einstellen und anschliessend die Sat>IP Wiedergabe starten.


    Für einen http-Stream gibt es die Option für eine Wiederverbindung (--http-reconnect), aber nicht für rtsp (real-time-streaming Protocol).


    Mehr Ideen habe ich im Moment nicht.


    MfG

    Thomas

  • Moin,


    gibt es da mittlerweile einen Lösungsansatz?


    Habe ebenfalls den Xoro 8670.

    Ebenfalls wird hier beim VLC (Windows, Android) und anderen Playern bspw. SAT>IP SDK (Android) die Wiedergabe nach 60 Sekunden unterbrochen.

    Der Start einer Übertragung benötigt auch ständig mehrmalige Versuche.

    Klingt eigentlich eher nach einem Problem des 8670.

    Fiemware Updates scheint es aber wohl nicht zu geben.


    Grüße

  • Soweit wie ich es verstanden habe ist VLC kein wirklicher (oder besser vollwertiger) SAT>IP Client, sondern er nutzt nur den UPnP Services eines SAT>IP Servers um dadurch auf einen Stream zuzugreifen, also deren Grundfunktionen. Er kann soweit ich weiß deshalb auch nicht selbständig nach Frequenzen scannen oder ähnliches. Aus diesem Grund ist er auch auf vordefinierte TV-Listen angewiesen, die entweder von dem Gerät selbst per Dienstinformation vom UPnP Service zur Verfügung gestellt werden oder aber er nutzt allgemeine Listen wie für Satelliten-TV. Ergo solange die SAT>IP Server sich korrekt an die Grundfunktionalitäten halten und nicht zwingend auf die SAT>IP Erweiterungen angewiesen sind, sollte VLC diese auch abspielen können.


    Gerade da VLC halt kein wirklicher vollwertiger SAT>IP Client ist, der den gesamten Datenstrom eines Transponders mit all seinen Kanälen empfängt, sondern eben nur einen einzigen Video Datenstrom (Kanal) händeln kann, ist der Vergleich auch nicht fair, da VLC nun mal halt kein SAT>IP Receiver ist. Warum manche aber denken dass es etwas mit OpenSource zu tun hat oder der Plattformunabhängigkeit ist mir ein Rätsel. Hierfür sollte man dann schon einen echten SAT>IP Client wie DVB Viewer oder andere nutzen.



    Laut Wikipedia:

    Quote

    Das SAT>IP-Protokoll ist ein Remote-Tuner-Protokoll und baut auf bestehende Protokolle wie IP und UPnP, RTSP und HTTP auf, die gegebenenfalls mit Erweiterungen versehen wurden.



    Ich selbst nutze VLC von jeher mit meiner FritzBox 6490 als TV-Server (seit Version 6.x), die aber erst seit Version 7.01 SAT>IP unterstützt, da VLC ja nur auf die Streaming-Funktionalität zugreift und dafür kein SAT>IP Protokoll notwendig ist.


    Da ja RTSP benutzt wird und es sich dabei um ein Streaming-Protokoll handelt, wird auch dann dieses genutzt. Der Client fragt dazu bzw. weist nacheinander dem Server an nach den Optionen (OPTIONS), der Beschreibung (DESCRIBE), der Einrichtung (SETUP) sowie dem Abspielvorgang (PLAY) bis zum Abbruch (TEARDOWN) der Verbindung (siehe "6.1 Request Line" RFC2326). Dabei ist es grundsätzlich irrelevant ob es sich um einen SAT>IP Server handelt für Live-TV oder einfach nur um einen speziellen Streaming-Dienst für Medien (z.B. dieser immer gleiche Demo-Stream rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov).


    Während des Streams zu meiner 6490 sendet der VLC bei mir auch regelmäßig aller 4 bis 5 Sekunden einen Empfänger-Report per UDP und ungefähr aller 58 Sekunden ein OPTIONS per TCP um den Sender mitzuteilen, dass die Verbindung noch aktiv ist. Analog verhält sich der VLC bei mir, wenn ich obigen Beispiel-Stream öffne, außer dass er ca. aller 58 Sekunden ein GET_PARAMETER per TCP sendet anstatt einem OPTIONS. Warum sich der TCP Befehl unterscheidet kann ich nicht sagen, aber der Timeout von 60 Sekunden wird in den Antworten (Reply) zu oben genanten Anfragen angegeben. VLC sendet also ca. 2 Sekunden vor dem Timeout ein Keep-Alive-Signal, für ein lokalem Server sollte dies also kein Problem darstellen, zumal ich davon ausgehe, dass die Verbindung erst nach einer gewissen Sicherheitsspanne abgebrochen wird.



    Um dein Problem genau zu überprüfen müsstest du dir also mal mit Wireshark deine Pakete anschauen.



    PS: Die Wörter in Majuskel sind spezielle gleichnamige Datenpakete welche vom VLC gesendet werden, da diese zu einer aufgebauten Verbindung gehören, ist es also recht schwierig manuell ein solches Paket einzufügen. Da GET_PARAMETER ein TCP Paket ist würden mir auch nur zwei Wege einfallen ein solches Paket einzufügen. Durch eine Man-in-the-middle Verbindung oder durch Anpassung von VLC selbst (was die bessere Option wäre). Ich gehe aber davon aus dass nicht VLC das Problem ist und dieser ein korrektes Keep-Alive Signal sendet, sondern nur der Server evt. ein anderes Signal erwartet.



    Edit:

    Laut SAT>IP Spezifikation (siehe Kapitel "3.5.1 RTSP") soll für die Aufrechterhaltung der RTSP Verbindung eine OPTIONS Nachricht für SAT>IP verwendet werden, in der auch die genutzte Session enthalten ist. Dies ist dann auch die Erklärung, warum bei einer Verbindung zu meiner 6490 ein OPTIONS und bei der RTSP Demo ein GET_PARAMETER verwendet wird. VLC erkennt den Unterschied da meine 6490 sich in einer Reply Nachricht als Antwort zu der DESCRIBE Nachricht auch als "SatIPServer" ausgibt. Vielleicht liegt hier auch das Problem, dass die problematische Box sich nicht als SAT>IP Server in den Antworten zu erkennen gibt und somit dann eine falsche Keep-Alive Nachricht erhält. Aber wie erwähnt, ohne dass einer der Betroffenen die Verbindungsdaten mal analysiert, kann man nicht sagen woran es genau liegt.

  • Hier ein Protokollauszug:


    (186.1sec)

    RTSP 284 OPTIONS rtsp://192.168.178.31:554/src=1&freq=12226&pol=h&ro=0.35&msys=dvbs&mtype=qpsk&plts=off&sr=27500&fec=34&pids=0,17,18,600,601,602,603 RTSP/1.0


    RTSP 132 Reply: RTSP/1.0 200 OK



    DESCRIBE versteht die Box aber wohl nicht:


    RTSP 310 DESCRIBE rtsp://192.168.178.31:554/src=1&freq=12226&pol=h&ro=0.35&msys=dvbs&mtype=qpsk&plts=off&sr=27500&fec=34&pids=0,17,18,600,601,602,603 RTSP/1.0


    RTSP 92 Reply: RTSP/1.0 404 Not Found



    Dann kommt auch noch ein SETUP, versteht die Box auch:


    RTSP 264 SETUP rtsp://192.168.178.31:554/src=1&freq=12226&pol=h&ro=0.35&msys=dvbs&mtype=qpsk&plts=off&sr=27500&fec=34&pids=0,17,18,600,601,602,603 RTSP/1.0


    RTSP 208 Reply: RTSP/1.0 200 OK



    Also kommuniziert die Box auch nach dem nicht verstandenen DESCRIBE.


    Dann kommt auch noch das PLAY, versteht die Box auch:


    RTSP 135 PLAY rtsp://192.168.178.31:554/stream=14 RTSP/1.0


    RTSP 168 Reply: RTSP/1.0 200 OK



    Und der Stream beginnt.


    Dann aber nach 242.5 Sekunden bzw. gut 56 Sekunden nach dem ersten OPTIONS:


    RTSP 138 OPTIONS rtsp://192.168.178.31:554/stream=14 RTSP/1.0


    keine Antwort von der Box.

    Ich finde hier dann allerdings ein rot unterlegtes:


    TCP 60 554 → 55713 [RST] Seq=270 Win=0 Len=0


    Habe allerdings keine Ahnung, was das bedeutet. Ein leeres Paket, in dem evtl. das RTSP/1.0 200 OK stehen sollte?



    Also für mich steht fest, der Xoro 8670 hat ne Macke und geht zurück!

    So wie ich das, Dank Rocky4 verstanden habe.

    Das KEEP ALIVE via OPTIONS wird von den Clients alle rund 56-57 Sekunden gesendet, aber eben nicht von der Box verstanden bzw. korrekt beantwortet und daher brechen die Clients dann die Wiedergabe ab, obwohl die Box fleißig weitere Streamdaten sendet.

    Schade.

    Eine Lösung wäre also, das Abbrechen der Wiedergabe durch VLC zu unterbinden.

    Ich glaube aber nicht, dass ich das selber hinbekomme :D


    Danke für die Hilfe!


    (Was mich nur wundert, dass es wohl doch einige gibt, bei denen es funktioniert...)

  • Also die Optionsnachricht ist ein TCP Paket, ergo muss es vom Empfänger quittiert werden, da jedes TCP Paket welches Daten enthält quittiert werden muss. Die Frage ist jetzt wann genau und wie wird es quittiert. Ein TCP RST Paket jedenfalls kennzeichnet den Abbruch einer TCP Verbindung. Wenn der Empfänger eines Paketes keine Daten zurücksenden möchte, so muss er halt trotzdem ein leeres Paket als Antwort senden, wo nur mittels entsprechender TCP Flags das zuvor erhaltene quittiert wird.


    Du musst bei dir halt schauen von wem der Abbruchwunsch genau kommt und wann. Sendet die Box den in ihren Antworten irgendwann mal einen Timeout Wert? Bist du sicher dass die Box dann weiterhin Daten sendet und VLC die Verbindung abbricht?


    Für mich jedenfalls scheint es so dass sich die Box nicht an das Protokoll hält. Evt. Kannst du aber noch probieren ein paar Optionen von VLC zu RTSP zu ändern. Ich kann dir aber erst später zeigen welche. Schaue also später noch einmal hier rein, dann erweitere ich meinen Post.



    oschi

    Edit:

    Wenn es für dich ok ist könntest du mir ja privat einen Link zu einem vollständigen Dumb von Wireshark bis zum Abbruch plus 10 Sekunden mehr schicken.



    Edit 2:

    Probiere auch mal verschiedene (alle vier) Möglichkeiten der folgenden zwei Optionen, siehe Markierung im Bild. Vielleicht hilft ja eine Kombination.