Seit ein paar Monaten habe ich einen "EyeTV Netstream 4Sat" SatIP Receiver mit 4 Empfängern und wollte den mit einem neu aufgesetzen VDR der auf einem odroid-c4 läuft nutzen.
Zuerst hab' ich das SatIP-Plugin probiert, aber das hat nicht wirklich auf Anhieb funktioniert. Da mich das etwas genervt hat hab' ich tiefer gegraben und sogleich einen Bug in curl entdeckt - wenigstens in der Version die ich verwende und die bis jetzt aktuell ist:
https://github.com/curl/curl/issues/12414
Der Bug führt dazu das Rückmeldungen vom SatIP-Receiver nicht vom SatIP-Plugin mit diesen Anweisungen gelesen werden können:
SATIP_CURL_EASY_SETOPT(handleM, CURLOPT_WRITEFUNCTION, NULL);
SATIP_CURL_EASY_SETOPT(handleM, CURLOPT_WRITEDATA, NULL);
Das führte (bei mir) dann zu vielen "Detected invalid status code" Logzeilen. Das hat mich etwas verunsichert ob ich da nicht einen Schrott SatIP Receiver habe der sich gar nicht an die Spezifikation hält. Also hab' ich mir noch die Mühe gemacht die SatIP-Spezifikation anzuschauen und siehe da, die zurückgemeldeten Stati sind ganz und gar nicht invalid
Zudem werden Rückmeldungen zwar ausgewertet im weiteren Programmverlauf aber einfach ignoriert. Mein SatIP-Server sendet wenn eine Verbindung ohne TEARDOWN beendet wurde eine Rückmeldung 503 auf SETUP mit Body "no more sessions". Wegen dem Curl-Bug ist diese nicht ersichtlich dennoch könnte ein "stumpfes" warten von 65 Sekunden dazu führen das die SatIP-Server Resource wieder frei ist.
Auch sonst bin ich auf komische Sachen gestoßen wie z.B.:
SATIP_CURL_EASY_SETOPT(handleM, CURLOPT_RTSP_REQUEST, (long)CURL_RTSPREQ_OPTIONS); // FIXME: this really should be CURL_RTSPREQ_RECEIVE, but getting timeout errors
Das sendet gefühlt wie wild OPTION-Requests.. Wenn ich da wieder CURL_RTSPREQ_RECEIVE eintrage funktioniert das bei mir ganz ohne timeout errors?? Und sendet dann erheblich weniger Requests. Das wäre IMHO als Quirk an- und abschaltbar sehr fein..
Auch wird der Reception Status über DESCRIBE geholt, gleichzeitig das RTCP Announcment ausgewertet:
Das hätte ich wiederrum auch gern als Quirk an- und abschaltbar. Beziehungsweise ob DESCRIBEs geschickt werden oder nicht oder ob DESCRIBE und/oder RTCP Announcments ausgewertet werden... hab' auf jeden Fall jede Menge Requests im Wireshark gefunden...
Daneben solche Sachen, die habe ich bei mir einfach einkommentiert (und sendet dann auch weniger Requests):
if (!strcmp(*streamParamM, *lastParamM) && hasLockM) {
debug1("%s Identical parameters [device %d]", __PRETTY_FUNCTION__, deviceIdM);
//return true; // fall through because detection does not work reliably
}
Am schlimmsten ist aber die standardmäßige SETUP -> PLAY -> TEARDOWN Schleife bei jedem Kanalwechsel die es (zumindest mit meiner) SatIP-Box nicht braucht .. Das habe ich auch noch extra mit DVBViewer und VLC im Wireshark geprüft, beide verwenden eine wie in der Spezifikation vorgegebene Arbeitsweise (Seite 24, 3.5.1): SETUP -> PLAY -> PLAY [...] und für Keepalive alle 50 Sekunden eine OPTIONS... und nur beim Beenden der Programme oder einem Timeout ein TEARDOWN
Bei Tests mit Aufnahmen wurden bei mir beim Umschalten auf einen Kanal des gleichen Transponders die Aufnahme beschädigt.
[Edit] Ui, gerade gefunden: [Octopus NET Pro und Sat>IP] Aufnahmefehler bei gleichzeitiger Nutzung eines anderen Senders auf dem aufnehmenden Transponder
Desweiteren gab es eine Situation da wurde die SatIP-Box mit Anfragen geflutet weil die zwar 503 zurückgab das SatIP-Plugin aber ständig "draufhämmerte"...
Da mir das Umbauen/Abändern vom Plugin zu anstrengend ist/war habe ich mich mal nach was anderem umgeschaut -> vtuner