Reconnectfunktion bei Bouquet Streams

  • @Reichi: ich hab heute mal einen Kanal über Partnerbox hinzugefügt mit meiner Anpassung. D.h. die Serviceref beginnt mit 1:256:...dann hab ich auf der Clientbox auf diesen Kanal gewechselt und anschliessen die Serverbox heruntergefahren. Nun hätte ich erwartet, dass die Clientbox nachdem die Serverbox wieder verfügbar ist, den Stream wieder startet. War irgendwie nicht der Fall. Mach ich noch was falsch?


    Der Eintrag im Bouquet sieht so aus:

    Code
    #SERVICE 1:256:19:2888:40F:1:C00000:0:0:0:http%3a//root%3apw@192.168.1.45%3a8001/1%3a256%3a19%3a2888%3a40F%3a1%3aC00000%3a0%3a0%3a0%3a:ONE HD (dm7080)
    #DESCRIPTION ONE HD (dm7080)

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • Peinlich, peinlich: ich hatte noch ein uralt e2 auf meiner Devbox (r8). Viel mir auf, als ich den Diff für InfoBarGenerics erstellte

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • Hallo,
    mit VLC wird der Stream ohne Stoppen abgespielt.


    ich verwende dreamboxEDIT und kann hier zwischen den Streamtypen DVB/TS (1) und non-TS (4097) wählen.


    Mit wget habe ich die Datei heruntergeladen:
    https://cdn1.markenfunk.tv/t1/ngrp:live_all/playlist.m3u8


    Darin befinden sich 4 Streams für verschiedene Auflösungen:

    Code: playlist.m3u8
    #EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-STREAM-INF:BANDWIDTH=5060608,CODECS="avc1.77.41,mp4a.40.2",RESOLUTION=1920x1080
    chunklist_b5060608.m3u8
    #EXT-X-STREAM-INF:BANDWIDTH=2506608,CODECS="avc1.77.31,mp4a.40.2",RESOLUTION=1280x720
    chunklist_b2296608.m3u8
    #EXT-X-STREAM-INF:BANDWIDTH=1296608,CODECS="avc1.77.30,mp4a.40.2",RESOLUTION=854x480
    chunklist_b1196608.m3u8
    #EXT-X-STREAM-INF:BANDWIDTH=646000,CODECS="avc1.77.30,mp4a.40.2",RESOLUTION=640x360
    chunklist_b596000.m3u8


    Also habe ich wie es empfohlen wurde Streamtypen DVB/TS (1) verwendet und als URL
    https://cdn1.markenfunk.tv/t1/…l/chunklist_b2296608.m3u8 für 1280x720.


    Leider wird der Stream dann gar nicht abgespielt.


    Verwende ich non-TS (4097) dann stoppt er.


    Lade ich auch diese mit wget steht darin:

    Wie ist hier vorzugehen?


    Vielen Dank

    MfG blueice_haller

  • Ich würde mir wünschen, dass es automatische Reconnects gibt, wenn beim Öffnen von Streams keine Verbindung hergestellt werden kann und es so lange immer wirder probiert wird, bis der Stream läuft.
    Ich streame nämlich sehr viele Sender von meiner Sat-Box zuhause zu meiner Client-Box, dir bei meiner Freundin steht, über das Internet. Das geht aufgrund der Bandbreite nur per rtsp. Dummerweise schließt der dreamrtspserver immer mal wieder Verbindungen nicht richtig beim Umschalten. Die haben dann den Status CLOSE_WAIT. Erst wenn man den dreamrtspserver neustartet, kann ein anderer Stream geöffnet werden. Um das zu Lösen überprüft ein Script auf der Server-Box einmal pro Sekunde die offenen Verbindungen und restartet den rtspserver, wenn CLOSE_WAIT gefunden wird. Jedenfalls muss muss ich in dem Fall immer auf einen anderen Sender und wieder zurück wechseln, weil es keinen automatischen erneuten Verbindungsversuch gibt.
    Bitte macht das nicht von Änderungen in der Service-Ref abhängig. Damit nämlich alle Kanäle in der lamedb enthalten sind und der EpgImporter funktioniert, kopiere ich auf die Client-Box die lamedb der Server-Box und mache dann einen Sendersuchlauf. So habe ich auch die Sat-Sender in der lamedb und benutze die Original Service-Refs in den Bouquets. Das ist auch für die Picons sehr nützlich, die kann ich nämlich auch einfach von der Server-Box auf die Client-Box kopieren und es läuft.

  • Und was ist so schwer daran das in deinen Bouquets anzupassen? Das standardmäßig zu aktivieren macht nicht unbedingt Sinn, weil man das Verhalten vielleicht gar nicht haben will.

  • @maluhi


    könntest du eventuell dein StreamingServer Script hier bereitstellen? Ich habe auch oft mit diesen "gestrandeten" Clients bzw. nicht-beendeten Sessions zu kämpfen.


    Laut DP-Devs soll dieser Umstand aber in nächster Zeit behoben werden.

  • Testet erstens auf das angesprochene CLOSE_WAIT-Problem (passiert oft) und zweitens, ob mehr als ein Stream besteht. Das letztere macht erstens meine Bandbreite nicht mit und zweitens lockt die erste Verbindung den Sender und die zusätzlichen Streams können nicht mehr per ?ref umschalten (passiert nur sporadisch ganz selten)

  • Nein das Script läuft bei mir dauerhaft als service. Kannst Du aber auch per cron ausführen, dann aber das "while true", "do", "sleep 2" und "done" entfernen.


    Per Cron hst Du aber das Problem, dass Du eine Minute bis zum "Fix" warten musst. Als Service läuft es in einer Endlosschleife und prüft den Status alle 2 Sekunden. Somit brauche ich eigentlich nur kurz hin und herschalten und kann sofort wieder gucken.


    Ich habe eine 820HD als Server-Box.

  • Ich habe es im Moment noch mit Portforwarding laufen und den RTSP mit User/Pass versehen. Eine VPN Verbindung habe ich zwar zwischen den Boxen, die schluckt aber zuviel Overhead und CPU-Last, daher lasse ich die Streams unverschlüsselt übertragen und mache nur alles restliche per VPN.


    Besser wäre es natürlich den Port 554 nicht öffentlich freigeben zu müssen. Wenn Du Lust auf rumbasteln hast, mache das am besten über einen SSH-Tunnel und benutze den Cipher arcfour. Der ist zwar schnell und leicht knackbar (man kann also mitlesen was Du da an Daten transferierst), aber Du hast weniger Chance, dass jemand Deine Box hackt, für den Fall dass bspw. im dreamrtspserver ein Bufferoverflow ist und man Code injecten kann. Dazu musst Du dropbear durch openssh ersetzen und den arcfour Cipher in der sshd_config erlauben. Anmerkung: Das Verfahren zur Authentification wird nicht beeinträchtigt, nur weil man arcfour benutzt - der Login ist also immer noch sicher, nur die übertragenen Daten sind leichter sichtbar. Das funktioniert grundsätzlich gut - habe zum Beispiel mein movie-Verzeichnis der Server-Box per sshfs mit arcfour auf meiner Client-Box gemountet. Der Datendurchsatz ist super und kein Vergleich zu einem anderen Cipher oder NFS über VPN. Habe nur noch keine Lust gehabt autossh für mipsel zu compilieren und die Stream-URLs nochmals zu ändern :smiling_face:


    Die Bouquets habe ich einfach vom Partnerbox-Plugin anlegen lassen und dann in den userbouquet Dateien die URLs ersetzt. Sieht jetzt bei mir bspw. so aus:


    Code
    #SERVICE 1:0:1:2F30:441:1:C00000:0:0:0:rtsp%3a//USER%3PASS@DOMAIN%3a554/stream?ref=1%3a0%3a1%3a2F30%3a441%3a1%3aC00000%3a0%3a0%3a0%3a:RTLplus
    #DESCRIPTION RTLplus


    Das Partnerbox-Plugin habe ich immer noch laufen für die RemoteTimer. Das hat aber ein Problem mit Sendern, die ein Leerzeichen im Namen haben. Dafür habe ich auch einen Fix, aber bisher noch nicht die Muße gehabt mich im Entwickler-Forum anzumelden und den zu posten. Aber vielleicht liest ja hier jemand mit :):



    Einmal editiert, zuletzt von maluhi ()

  • Aber mal zurück zum Thema. Bei mir reconnected der Stream nicht, trotzdem ich jetzt mal testweise die 256 in die SRef eingebaut habe. Ich kann zwar das Netzwerkkabel ziehen und wenn ich es wieder einstecke läuft der Stream weiter - aber starte ich einfach auf der Server-Box den rtsp-Server neu, dann bricht die Wiedergabe ab und startet nicht neu. Habe NN2 laufen - aber das sollte ja eigentlich keinen Unterschied machen, oder?