Hallo,
ich setze seit einigen Jahren vdr 1.6.0 ein und habe mich endlich aufgerafft, einen vdr Server ohne Grafikkarte (headless) in den Keller zu stellen. Der vdr im Wohnzimmer hat keine DVB Karte mehr und ist nur noch Client. Streaming über streamdev läuft fast 1a
Auf dem Server läuft vdr 1.6.0 + streamdev 0.5.2 + dummydevice + weitere Plugins
(vdr Version 1.6.0 wegen "softdevice" Plugin auf dem Client - geht noch nicht mit 2.x)
Problem: Das Umschalten von Kanälen dauert mitunter fünf Sekunden, wenn der VDR Server gerade auch einen Kanal "fernsieht".
In dem alten Thema "streamdev-server-plugin 0.5.1 lnb-sharing und headless server" gibt es den experimentellen "always_suspend" Patch. Dieser löst das Umschaltproblem, schafft jedoch ein Neues: Bei jedem Durchlauf der Hauptschleife in vdr.c wird "LastInteract" zurückgesetzt (vermutlich löst SuspendCtrl eine OSD "Aktion" aus)
-> Damit fährt vdr nicht mehr von selbst runter. Hat mich ein wenig Debugging-Code gekostet das herauszufinden...
Konfiguriere ich den streamdev Server auf "Client darf pausieren" und pausiere einmal die Ausgabe auf dem Server, so ist das Kanalumschalten sehr schnell. Konfiguriere ich den streamdev Server auf "Immer pausiert", dauert es die oben beschriebenen fünf Sekunden.
Ein Kanalwechsel von Kanal 8 auf Kanal 1 sieht so aus:
Jul 14 00:37:39 vdrmaster vdr: [3296] transfer thread ended (pid=3156, tid=3296)
Jul 14 00:37:39 vdrmaster vdr: [3298] TS buffer on device 1 thread ended (pid=3156, tid=3298)
Jul 14 00:37:39 vdrmaster vdr: [3297] buffer stats: 164688 (7%) used
Jul 14 00:37:39 vdrmaster vdr: [3297] receiver on device 1 thread ended (pid=3156, tid=3297)
Jul 14 00:37:40 vdrmaster vdr: [3156] switching to channel 8
Jul 14 00:37:40 vdrmaster vdr: [3156] buffer stats: 161492 (7%) used
Jul 14 00:37:40 vdrmaster vdr: [3156] info: Kanal nicht verfügbar!
Jul 14 00:37:42 vdrmaster vdr: [3156] switching to channel 1
Jul 14 00:37:42 vdrmaster vdr: [3156] info: Streamen im Gange
Jul 14 00:37:42 vdrmaster vdr: [3350] receiver on device 1 thread started (pid=3156, tid=3350)
Jul 14 00:37:42 vdrmaster vdr: [3349] transfer thread started (pid=3156, tid=3349)
Jul 14 00:37:42 vdrmaster vdr: [3351] TS buffer on device 1 thread started (pid=3156, tid=3351)
Jul 14 00:37:44 vdrmaster vdr: [3300] streamdev-livestreaming thread ended (pid=3156, tid=3300)
Jul 14 00:37:44 vdrmaster vdr: [3299] streamdev-writer thread ended (pid=3156, tid=3299)
Jul 14 00:37:44 vdrmaster vdr: [3170] buffer stats: 165064 (4%) used
Jul 14 00:37:44 vdrmaster vdr: [3352] streamdev-writer thread started (pid=3156, tid=3352)
Jul 14 00:37:44 vdrmaster vdr: [3353] streamdev-livestreaming thread started (pid=3156, tid=3353)
Jul 14 00:37:44 vdrmaster vdr: [3349] video: synced early
Alles anzeigen
Was dabei auffällt: Es kommt zuerst ein "switching to channel 8", sprich er wechselt erneut zum bereits eingestellten Kanal.
Liegt das am "info: Kanal nicht verfügbar" und er wechselt sozusagen auf Kanal 8 zurück?
Vermutlich schaltet er dann im zweiten Anlauf mit Gewalt auf Kanal 1.
Hier der gleiche Kanalwechsel während der Server pausiert ist:
Jul 14 00:55:05 vdrmaster vdr: [3444] streamdev-livestreaming thread ended (pid=3380, tid=3444)
Jul 14 00:55:05 vdrmaster vdr: [3443] streamdev-writer thread ended (pid=3380, tid=3443)
Jul 14 00:55:05 vdrmaster vdr: [3394] buffer stats: 97760 (2%) used
Jul 14 00:55:05 vdrmaster vdr: [3447] streamdev-writer thread started (pid=3380, tid=3447)
Jul 14 00:55:05 vdrmaster vdr: [3448] streamdev-livestreaming thread started (pid=3380, tid=3448)
Jul 14 00:55:05 vdrmaster vdr: [3446] TS buffer on device 1 thread ended (pid=3380, tid=3446)
Jul 14 00:55:05 vdrmaster vdr: [3445] buffer stats: 97384 (4%) used
Jul 14 00:55:05 vdrmaster vdr: [3445] receiver on device 1 thread ended (pid=3380, tid=3445)
Jul 14 00:55:05 vdrmaster vdr: [3449] receiver on device 1 thread started (pid=3380, tid=3449)
Jul 14 00:55:05 vdrmaster vdr: [3450] TS buffer on device 1 thread started (pid=3380, tid=3450)
Interessanterweise protokolliert er hier nichts mehr von "switching channel".
Folgendes habe ich noch herausgefunden: Ohne "dummydevice"-plugin schaltet er schnell um.
Vermutlich kann der Server dann nicht mehr fernsehen. Allerdings kommen dann solche Meldungen,
wenn ich z.B. das OSD über das "vdr-remote" Plugin per telnet aufrufe:
Damit könnte ich zur Not leben...
Ideen wie man das Verhalten verbessern kann?
Benötigt man mit vdr 1.6.0 noch das "dummydevice" für einen headless Server?
Danke und Gruß,
Thomas
PS: Puh, ganz schön langer Text für meinen ersten Beitrag