Ich habe mal in satip Trace eingeschaltet und ein Log angehängt.
Das Log endet mit dem Fehler.
Der Fehler tritt so gegen Nov 7 20:19:10 auf.
Aber ich erkenne da nicht was da schief laufen könnte.
Nov 7 20:19:10
Nov 7 20:19:1
Ich habe mal in satip Trace eingeschaltet und ein Log angehängt.
Das Log endet mit dem Fehler.
Der Fehler tritt so gegen Nov 7 20:19:10 auf.
Aber ich erkenne da nicht was da schief laufen könnte.
Nov 7 20:19:10
Nov 7 20:19:1
Da kommt nach dem umschalten noch Mist vom SatIP plugin.
Aber satip Plugin ändert nicht den Stream Payload oder die DVB Metadaten, kann es doch gar nicht, ist nur ein Input Device Plugin, und der SAT>IP Server auch nicht ... ?
Aber satip Plugin ändert nicht den Stream Payload oder die DVB Metadaten, kann es doch gar nicht, ist nur ein Input Device Plugin, und der SAT>IP Server auch nicht ... ?
Alles richtig. Nur wenn ich versuche den neuen Stream an ffmpeg zum dekodieren zu geben dann meldet mir ffmpeg eine falsche Auflösung. Ich denke das beim Umschalten noch reste des alten Stream geliefert werden obwohl der vdr dem Ausgabeplugin schon gesagt hat das ein neuer Stream kommt.
Wie soll das gehen? Satip würfelt keine TS Pakete und VDR kann erst den Unterschied bemerken, wenn neue Pakete ankommen und dekodiert wurden..
Das der falsche Stream von satip ausgeliefert wurde, konnte ich gestern feststellen beim Umschalten von Kabel1 auf Tele5.
Obwohl das VDR OSD meinte, ich schaue Tele5, lief Bild und Ton von Pro7Maxx der wohl mit bei Kabel1 auf dem Transponder liegt.
Den hatte ich vorher aber gar nicht angewählt.
Das Seltsame ist, dass scheinbar nur ich diese Problem habe.
Das Gute ist aber das ich es reproduzieren kann...
Zeig mal deine channels.conf und deine sources.conf.
Zeig mal deine channels.conf und deine sources.conf.
Hier die beiden Dateien.
Daran liegt es auch nicht, die sehen normal aus.
Auf was steht in deiner setup.conf softhddevice.ClearOnSwitch?
Auf was steht in deiner setup.conf softhddevice.ClearOnSwitch?
Folgendes steht dazu in der setup.conf:
heifisch : was ist, wenn Du eine Aufnahme von Tele5 abspielst und dann direkt (ohne die Wiedergabe vorher zu beenden) die Wiedergabe einer Aufzeichnung von Kabel 1 startest?
Die laufende Wiedergabe sollte enden und die neue Wiedergabe starten. Im Prinzip nichts anderes als bei einem Kanalwechsel.
heifisch : was ist, wenn Du eine Aufnahme von Tele5 abspielst und dann direkt (ohne die Wiedergabe vorher zu beenden) die Wiedergabe einer Aufzeichnung von Kabel 1 startest?
Die laufende Wiedergabe sollte enden und die neue Wiedergabe starten. Im Prinzip nichts anderes als bei einem Kanalwechsel.
Ich habe jetzt mit live abwechselnd das Abspielen der Aufnahmen gestartet ohne die vorige zu beenden.
Da gibt es keine Probleme, auch keine Bildfehler.
Ich versuche mich gerade mit den Starten des Trace beim satip-Plugin.
Kennt sich jemand aus, welches die sinnvollsten Einstellungen sind?
Ich habe mal Folgendes versucht:
svdrpsend PLUG satip TRAC 0x0003
Da kommt schon eine ganze Menge, erkenne aber noch nichts Relevantes.
Hier mal das Log mit svdrpsend PLUG satip TRAC 0x0003 mit 2 Umschaltsequenzen.
Die letzte läuft in den Fehler.
Bei dem fehlerhaften Umschalten vermisse ich das setPlayMode 0. Ausserdem kommen da 2 get_format Callbacks von ffmpeg. Wobei schon der erste die falsche Auflösung von 480x576 bringt. Da ist definitiv etwas falsch in der Umschaltsequenz aus Sicht des Ausgabeplugins.
Das hatte ich schon mit softhddevice-cuvid probiert. Da hatte ich beim Umschalten auch öfters Bildfehler
Probier mal mit softhddevice.SoftStartSync = 3 (RE: [Announce] Softhddevice 2.0.0.)
Probier mal mit softhddevice.SoftStartSync = 3 (RE: [Announce] Softhddevice 2.0.0.)
Danke, das teste ich bei Gelegenheit.
Ich denke aber, das kann höchstens die Auswirkungen kaschieren.
Das Problem kommt sicher nicht vom Ausgabe-Plugin.
Die Tatsache, dass ich jetzt schon paar mal, beim Umschalten von Kabel1 auf Tele5 den Stream von Pro7Maxx zu sehen und zu hören bekommen habe, obwohl VDR meint ich wäre auf Tele5, legt doch sehr nahe, dass hier beim Tuning etwas schief geht.
Jetzt, da ich den Fehler sehr sicher reproduzieren kann, würde ich gern die Ursache finden, so dass diese beseitigt werden kann.
Ich versuche gerade mich mal in die Sat>IP Specs einzulesen um zu verstehen wie der Tuning-Vorgang erfolgt.
Hier wird wohl bei der bestehenden Session der Kanalwechsel angestoßen:
Nov 8 20:33:31 vdr vdr: [2786] SATIP1: void cSatipTuner::UpdateCurrentState(): Switching from tsLocked to tsSet [device 0]
...
Nov 8 20:33:31 vdr vdr: [2786] SATIP1: bool cSatipRtsp::Play(const char*) (rtsp://192.168.139.201/stream=1?src=1&freq=12545&pol=h&ro=0.35&msys=dvbs&mtype=qpsk&plts=off&sr=22000&fec=56) [device 0]
Und dann wechselt noch der Status hier:
Nov 8 20:33:31 vdr vdr: [2786] SATIP1: void cSatipTuner::UpdateCurrentState(): Switching from tsSet to tsTuned [device 0]
...
Nov 8 20:33:31 vdr vdr: [2786] SATIP1: void cSatipTuner::UpdateCurrentState(): Switching from tsTuned to tsLocked [device 0]
Nur meldet jetzt der Sat>IP-Server den Status, oder wie geht das?
Wenn ich zusätzlich zum Live-Bild eine Aufnahme auf einem anderen Transponder mache, dann wird eine neue Session aufgemacht:
Nov 9 07:47:35 vdr vdr: [2788] SATIP1: bool cSatipRtsp::Setup(const char*, int, int, bool) (rtsp://192.168.139.201/?src=1&freq=12545&pol=h&ro=0.35&msys=dvbs&mtype=qpsk&plts=off&sr=22000&fec=56, 32836, 32837, 0) [device 1]
Nun sieht es so aus, in dem Fall mit dem Bild von Pro7Maxx auf Tele5, dass der Kanalwechsel nicht korrekt erfolgt ist, aber das satip-Plugin davon ausgeht.
Im Fall wenn es zu den Hängern kommt, ist der Stream einfach defekt der ffmpeg vorgeworfen wird. Das könnte ein Timing-Problem sein.
Ich will mal schauen, ob ich mit tcpdump die Ereignisse einfangen kann, und ob man da etwas erkennen kann.
Man müsste jetzt genauer analysieren, wie das satip-Plugin überhaupt den Kanalwechsel macht. Es ist ja aus Sicht von vdr ein DVB device. Der Ablauf wird von vdr wie folgt vorgegeben: Erstmal wird über die Priority sowie über Provides...-Funktionen geprüft, ob das device den gewünschten Kanal bereitstellen kann. Das kann das satip-Plugin m.E. nur aufgrund der ihm beim Start übergebenen Parameter prüfen. Eine Abfrage an den satip-Server findet da m.E. nicht jedesmal statt.
Das Beenden eines laufenden Streams sollte eigentlich in CloseDvr erfolgen. Das "Tunen" des neuen Kanals dann in SetChannelDevice. Danach wird dann mit OpenDvr der neue Stream geöffnet. Das basiert auf der DVB-Logik: Ein DVB device hat zwei unterschiedliche file descriptors, die unabhängig voneinander geöffnet und geschlossen werden können. Bei der Umsetzung für ein Plugin, das dem vdr analoge devices bereitstellt, bin ich deswegen halb verrückt geworden. Da gab es nämlich nur einen file descriptor. Wenn ich das in CloseDvr geschlossen habe, um den Stream zu beenden, lief der anschließende Versuch von SetChanneldevice, dort die Frequenz zu ändern, in einen Fehler. Und machmal ruft vdr OpenDvr zuerst auf (was dort automatisch zunächst einen CloseDvr auslöst...). Anfangs hatten wir deshalb darauf verzichtet, beim Kanalwechsel den Stream richtig zu beenden und einfach bei laufendem Stream den Kanalwechsel gemacht. Das führte mitunter zu genau solchen Problemen, dass im Buffer noch Reste vom alten Kanal waren. Später haben wir dann den eigentlichen Kanalwechsel in OpenDvr verlegt und dort eine Schleife eingebaut, die erstmal die Ausführung von CloseDvr abwartet.
Ich habe nur kurz in die Sourcen des satip-Plugins geschaut und überblicke die Ablaufsteuerung noch nicht. Aber dass in OpenDvr zunächst das propylaktische CloseDvr fehlt, wie es vdr in dvbdevice.c macht, halte ich für problematisch.
bool cSatipDevice::OpenDvr(void)
{
debug9("%s [device %u]", __PRETTY_FUNCTION__, deviceIndexM);
bytesDeliveredM = 0;
tsBufferM->Clear();
if (pTunerM)
pTunerM->Open();
isOpenDvrM = true;
return true;
}
void cSatipDevice::CloseDvr(void)
{
debug9("%s [device %u]", __PRETTY_FUNCTION__, deviceIndexM);
if (pTunerM)
pTunerM->Close();
isOpenDvrM = false;
}
Alles anzeigen
Ich versuche mich gerade mit den Starten des Trace beim satip-Plugin.
Kennt sich jemand aus, welches die sinnvollsten Einstellungen sind?
Guck mal in log.h
Je nach dem was du sehen willst, musst du die Werte addieren.
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!