Hallo!
Ich brauche Hilfe von VDR-Nutzern.
Warum?
Mir ist beim Programmieren mit dem VDR eine Merkwürdigkeit aufgefallen. Beim Analysieren von Videos verpasst das Programm manchmal den Moment, zu dem es aufnehmen könnte, und fängt erst kurz darauf an - je nachdem, welche Datenmengen er auf einmal analysiert. Der Unterschied ist für den Nutzer eher unbedeutend, aber es wäre trotzdem besser, das Programm so zu ändern, dass es sich unabhängig von Zufällen vorhersagbar verhält. Voreingestellt ist, dass mindestens 5 * 188 Bytes vorliegen müssen. Bei meinen Aufnahmen braucht es aber manchmal 6 * 188 Bytes, um den Anfang zuverlässig zu erkennen.
Und jetzt kommt das Problem: Ich weiß nicht, ob 6 nun die magische Zahl ist (und Klaus ist sich auch nicht sicher). Daher habe ich Progrämmchen geschrieben, das Aufnahme-Dateien auf dieses Problem hin untersucht. Je mehr Leute das auf je mehr unterschiedliche Dateien loslassen, desto mehr können wir darüber erfahren.
Wie?
Um helfen zu können, muss man in der Lage sein, einen VDR zu kompilieren.
Zuerst führt man im VDR-Verzeichnis aus:
> make
Was für den Einsprungpunkt des VDR kompiliert wurde, löschen wir wieder - das Testprogramm hat ja seinen eigenen Einsprungpunkt
(keine Sorge, das lässt sich jederzeit mit einem neuen "make" wiederherstellen):
> rm vdr.o
Dann kompiliert man die angehängte Datei:
> g++ -c framedetectortest.cpp
Anschließend verlinkt man sie:
g++ -o framedetectortest *.o libsi/libsi.a -lfontconfig -lfreetype -lpthread -ldl -ljpeg -lrt
Nun hat man das Programm framedetectortest, das man auf seine VDR-Aufnahmedateien (*.ts) loslassen kann:
./framedetectortest 00002.ts
Die Ausgabe sieht zum Beispiel so aus:
Checking file at offset 0
Without frame limit... Found I frame after 99452 bytes
With frame limit 5... Found I frame after 220336 bytes
With frame limit 6... Found I frame after 99452 bytes
TS package frame size needed for this video block: 6
Maximum TS package frame size needed for this video recording: 6
Und dann bräuchte ich Rückmeldung, was getestet worden ist (Kabel, Satellit, Terristrisch? HD, SD? Land?) und welche Zahl ("Maximum TS package frame size") am Ende rauskam. Das Ergebnis ist auch dann interessant, wenn es 5 oder 6 ist!
Ciao,
Eike
PS: Ich werd das ganze später noch auf Englisch posten.