Warum wohl hab ich noad so geschrieben, daß es nur Schnittmarken setzt? Weil es nicht funktioniert!
Gruß
theNoad
Warum wohl hab ich noad so geschrieben, daß es nur Schnittmarken setzt? Weil es nicht funktioniert!
Gruß
theNoad
Ok, jetzt sind wir ein kleines Stück weiter.
Die Zahlen, die durch die neue log-Zeile ausgegeben werden, sind jeweils der gewählte Startwert für den Logo-Scan und der Index des nächsten I-Frames, bei dem der Logo-Scan dann tatsächlch startet. Diese Zahlen sind ok, auch der Gesamtablauf entspricht dem, was ich da mal programmiert habe.
Was aber auffällt: jeder Logo-Scan dauert sehr lange und bricht mit der Meldung
>Mar 3 09:17:12 b5 noad: cIndexFile::Get returns false at 90006
ab. Dies ist die Index-Nummer nach dem letzten gültigen Index-Eintrag, daher endet die Scan-Schleife hier. Dieser Index-Eintrag entspricht auch der von Dir angegebenen Aufnahmelänge.
Bleibt noch zu klären, warum die Scans immer bis zum Ende der Aufnahme laufen und kein Ergebnis liefern.
Die Schleife ist mit
> while( curIndex >= 0 && !data->m_bFound && checkedFrames < FRAMES_TO_CHECK )
programmiert, dabei wird in "checkedFrames" die Anzahl der tatsächlich dekodierten Frames gezählt. Das hochzählen der tatsächlich dekodierten Frames erfolgt in der Callback-Routine des demuxers/decoders (in diesem Fall in "drawCallback" in noad.cpp). Diese Callback-Routine wird vermutlich nicht aufgerufen, daher wird auch "checkedFrames" nicht hochgezählt und die Schleife terminiert erst bei Ende der Aufnahme.
Aus meiner Sicht deutet das auf ein Problem in der Kombination noad/mpeg2dec hin. Prüfe bitte, ob evtl. mehrere Versionen der libmpeg2 vorhanden sind und ob die richtige Version geladen wird. Ausserdem solltest Du mal prüfen, ob die mpeg2-Header, mit denen noad kompiliert wird, zu der verwendeten libmpeg passen.
Gruß
theNoad
Hallo Torsten,
ZitatSo geht das dann Stunden. nur das "part2" zählt langsam hoch.
part2 läuft bis maximal 10, dnn muß folgende Meldung erscheinen:
detectLogo: no Logo found, give up
Zählt part2 höher als 10, ist irgendwas faul.
Der Fehler scheint hier
ZitatFeb 27 22:10:28 b5 noad: cIndexFile::Get returns false at 134906
zu liegen. Diese Index-Position liegt bei ca. 89 Minuten, das kann bei einer Aufnahme von 60 Minuten Länge eigentlich nicht richtig sein.
Füge mal in die Funktion "doLogoDetection" in noad.cpp die folgende dsyslog-Zeile ein
curIndex = cIF->GetNextIFrame( startIndex, true, &FileNumber, &FileOffset, &Length, true);
+ dsyslog(LOG_INFO, "doLogoDetection %d %d", startIndex, curIndex);
while( curIndex >= 0 && !data->m_bFound && checkedFrames < FRAMES_TO_CHECK )
und schau Dir die logging-Ausgabe an.
ZitatIch habe bisher 5 verschiedene Aufnahmen getestet, überall dasgleiche
Gibt es auch bei den anderen Aufnahmen diese Index-Fehler?
Vielleicht hängt das mit der Umstellung auf Kernel 2.6 zusammen? Hat sonst schon jemand vdr/noad unter Kernel 2.6 am laufen und kann dazu was sagen?
theNoad
Hi jackfritt,
die Idee mit der Speicherung von Werbeauschnitten oder ähnlichen Dingen wie z.B. Logo-Speicherung je Sender oder Sender-Profile hatte ich auch schon und ist auch schon in anderen mails an mich herangetragen worden. Ich möchte noad aber für den Anwender (mich!) so einfach wie möglich halten. Wenn ich anfange, diese Dinge zu speichern und zu Vergleichen heranzuziehen, wird die Verwaltung dieser zusätzlichen Informationen sehr aufwändig und die Fehlerquellen mehren sich. Die Idee an sich ist gut, aber meine Aufwands-/NutzenAnalyse hält mich noch davon ab. Vielleicht komme ich auf diese Dinge zurück, wenn mir die Ideen für die Verbesserung von noad in der jetzigen arbeitsweise ausgegangen sind.
ZitatKeine Ahnung ob das jetz wirklich den Rahmen des ganzen sprengt aber war ja auch nur so ein Hirngespinst von mir
Auch Hirngespinste sind in diesem thread willkommen
Gruß
theNoad
Hi,
Zitat...arbeitet denn noad zur zeit mit 2 fixpunkten (anfang und ende der werbung) oder wäre es auch möglich mit noad gezielt den anfang der werbung zu erkennen ohne das das ende schon bekannt ist ? sprich würde noad es hinbekommen den anfang der werbung zu erkennen und innerhalb von sekunden darauf zu reagieren ?
Im Prinzip ja, aber...
- es kann zu Fehlern kommen, z.B. weißes Logo auf weißem Hintergrund --> Logoerkennung unmöglich. In diesem Fall würde dann der laufende Film abgewürgt werden. Durch das jetzige Verfahren werden solche kurzen Logo-Aussetzer im nachhinein bereingt, indem Schnittmarken, deren Abstand unter einem bestimmten Schwellwert liegt, komplett entfernt werden.
- Manchmal wird gleich zu Beginn einer Werbesquenz eine Programmvorschau mit Senderlogo gezeigt. In solchen Fällen ist noad machtlos.
- interessanter und meistens auch problematischer ist eigentlich das Werbeende, da häufig nach der eigentlichen Werbung zum Teil sehr lange Programmvorschauen gezeigt werden. Unrühmlicher Spitzenreiter ist hier sicher RTL
ZitatIch hatte das früher schon mal gefragt.
Kann man mit den unterschiedlichen Lautstärkepegeln nichts anfangen ?
Ich hatte das schon früher mal beantwortet: Ich kann (noch) nicht den Lautstärkepegel feststellen. Ich weiß daher auch nicht, ob es überhaupt möglich ist, die Unterschiede Film/Werbung an der Lautstärke zu erkennen.
Zitat(glaubt ihr nicht, dass sich auch die Sender auf entsprechende Programme einstellen und dementsprechend reagieren ?)
Ich glaube nicht, daß vdr und noad solche Auswirkungen haben werden, dazu ist der Anwenderkreis einfach zu klein. Sobald aber der digitale Videorecorder Standard ist, und das wird vermutlich nicht mehr lange auf sich warten lassen, wird so etwas vermutlich passieren. Dann hilft uns nur noch unser restriktives deusche Werberecht, das den Sendern doch einige Grenzen auferlegt. Zu diesem Thema gab es aber bereits einen thread im Board (liegt schon länger zurück und ist offensichtlich nicht mehr vorhanden)
ZitatEin Einblenden eines Standbildes, Abspielen von Musik waehrend der Werbung, ... halte ich persoenlich bei einem Film ebenso stoerend, wie die Werbung selbst (da kann ich ja den Ton abdrehen oder sonstige wichtige Dinge erledigen ...).
Volle Zustimmung von mir. Gerade bei Filmen, bei denen man so richtig mitfiebert, ist jede Unterbrechung unerwünscht und störend.
Zitatvideos hatten mal das feature werbesignale die von den sendern ausgestrahlt werden sollten zu erkennen und dann entsprechend den video abzuschalten. natürlich haben die sendenanstalten sich das ganze nochmal überlegt wie jeder sich denken kann.
Und bei DVB sind die Sender nicht mal in der Lage, ein Signal zum korrekten Sendungsanfang analog VPS zu liefern.
Zitatwer das tool avisynth kennt weiss vielleicht das z.Z. an einer szenen erkennung für filme gearbeitet wird. und das ist noch viel unmöglicher zu realiseren, trotzdem wird drüber nachgedacht und drüber diskutiert.
Auch ich schaue manchmal über den Tellerrand und habe schon mit Szenen-Wechselerkennung gearbeitet. Die Ergebnisse waren eher ernüchternd, ich habe daher nie eine Version mit dieser Variante veröffentlicht. Ich werd mir trotzdem mal die Diskussion anschauen.
ZitatGerade bei dem Film, auf den man sich evtl. ein halbes Jahr gefreut hat, wird das Ganze schief gehen ...
Full Ack. never trust noad!
Gruß
theNoad
Die Grundidee ist eigentlich ganz einfach: wird noad zu Beginn Aufnahme gestartet, legt es sich erstmal schlafen. Nach einer gewissen Zeit beginnt es, den bis dahin aufgenommenen Teil zu analysieren und die Werbeblöcke zu markieren. Ist der Teil abgearbeitet, folgt wieder eine Schlafpause usw.
Um das zu realisieren, müssen die noad-Routinen so erweitert werden, daß jeweils nur ein vorgegebener Bereich analysiert wird. Außerdem muß der vdr so gepatcht werden, dass die marks.vdr, ähnlich wie die index.vdr, zyklisch neu eingelesen wird, damit die neu hinzugefügten Marken auch verwendet werden können, z.B. durch den Jump-Patch. Mit diesem einfachen Grundgerüst sollte werbefreies timeshifting möglich sein.
Diese Vorgehensweise hätte eine hohe CPU-Last und IO-Last in den Analysephasen zur Folge, allerdings sehe ich das, zumindest auf meinem Rechner, als unkritsch an.
Andere Idee: noad hängt sich in den Aufnahme-thread ein, jagt die empfangenen Pakete sofort durch den mpeg-decoder und setzt grob an Hand des erkannten Logos die Marken. Ein parallel laufender thread kümmert sich dann darum, die gesetzten Marken genauer zu untersuchen und ggf. besser zu positionieren. Hierbei ist die CPU-Last wähernd der Aufnahme grundsätzlich höher und steigt dann weiter an, wenn Marken gesetzt wurden und weiter überprüft werden. Die IO-Last steigt aber nur in den Überprüfungsphasen an.
Das sind die Ideen, die ich im Moment so im Kopf habe. Allerdings habe ich auch bzgl. der Werbeerkennung noch einige Ideen, die ich gerne überprüfen möchte. Außerdem möchte ich eigentlich mal den code überarbeiten, da gibt es doch einiges an Aufräumarbeiten und Verbesserung der Übersichtlichkeit zu tun.
Für gute Ideen von anderer Seite bin ich immer zu haben, wenn jemand einen besseren Vorschlag hat: immer her damit.
Gruß
theNoad
Hi,
Zitatdie ganzen erkennungsmeschanismen könnten doch auch on the fly möglich sein
Das ist und bleibt mein Ziel mit noad.
Zitates ist klar das das ganze auf die cpu geht
Deshalb wird es noad auch weiterhin immer in der jetzigen Form geben, da nicht alle VDR'ler eine schnelle CPU haben.
Zitat..bei aufnahmen würde die aufnahme automatisch stoppen.
Das kann man erst machen, wenn die Erkennung der Werbung bei 100% liegt, das wird wohl Utopie bleiben.
Zitatich kenn mich natürlich mit dem noad plugin nicht so gut aus
...weil noad (noch) kein plugin ist
Zitateventuell könnte man auch die charateristik eines werbeanfang jingles einprogrammieren oder ähnliches.
Schnapp dir die Sourcen und fang an
Zitatwas haltet ihr von diesem grundgedanken. also ich finde einen test ist es wert. eventuell könnte das die nächste generation von noad sein
Das wird die nächste Generation von noad sein.
Gruß
theNoad
Hi,
eine Abschaltung von checkBlacklineOnmark ist nicht vorgesehen. Sollten solche Einblendungen öfter auftreten, bitte melden. Ich schau dann mal, ob man da was machen kann.
Gruß
theNoad
Hi,
Zitatmake: *** Keine Regel vorhanden, um das Target >>mpeg2.h<<, benötigt von >>noad.o<<, zu erstellen. Schluss. Hat jm. eine Idee was hier falsch gelaufen ist!?
Der Compiler findet die Datei "mpeg2.h" nicht. Das kann verschiedene Ursachen haben.
- libmpeg2 nicht installiert --> libmpeg2 installieren
- mpeg2.h ist in einem anderen Verzeichnis installiert --> Makefile ändern (Zeile 18)
Gruß
theNoad
Hi,
ZitatDie Option -vvv wird in der (knappen) Dokumentation des vdr-plugin-noad* nicht erwähnt, das mag an einer veralteten noad-Version im Plugin liegen.
Welche noad-Version hast Du?
Aus dem README zu noad ab Version 0.3.2:
options: -s <filename>, --statisticfile=<file> Name der datei, in der Statistik-Daten gespeichert werden
-v, --verbose erhöht den Log-Level, kann mehrfach angegeben werden
noad-0.3.1 hat noch keinen Parameter für den Loglevel, hier wird automatisch der höchste Loglevel eingestellt.
Außerdem steht in jedem README zu noad am Ende
ZitatFehlermeldungen, Anregungen, Hinweise und auch Erfahrungsberichte, am besten als noad-Statistik-File, an: theNoad@SoftHome.net
In dem README habe ich versucht, die wesentlichen Dinge zu noad aufzuführen. Wenn Du meinst, daß hier etwas fehlt oder unverständlich ist, schreib's mir. Die Chancen, daß Deine Anregungen aufgenommen weden und in die nächste Version einfliessen, stehen nicht schlecht.
Nun zum eigentlichen Thema:
Hat schon jemand anderes mit der ct'-Version den von Kirnbichler beschriebenen Fehler mit den Sonderzeichen in Aufzeichnungsnamen festgestellt? Wie sieht der noad-Aufruf in der ct'-Version aus?
Gruß
theNoad
Hi,
@Kirmbichler:
ZitatDas ließe sich besser analysieren, wenn noad in eine logdatei schriebe, was es so macht ...
Ergänze Deinen noad-Aufruf um '-vvv' und beobachte Dein Syslog-File. Du wirst Dich wundern, wie gesprächig noad dann wird...
Gruß
theNoad
Zitatnicht alle Werbeblöcke erkannt
Werbung oder Programmvorschau? Werbeblock ohne Senderlogo nicht erkannt? Das würde ich dann als Fehler sehen. Welcher Sender? Welcher Film? Aufnahme noch vorhanden?
ZitatWerden die erkannten Logos eigentlich gespeichert?
Nein. Meine Statistik hat mir gezeigt, daß der Zeitgewinn hier nur minimal wäre, wohingegen der Aufwand für die Verwaltung der Logos recht hoch ist.
Eine Verbesserung der Erkennung ergibt sich aus der Speicherung der Logos auf keinen Fall.
Gruß
theNoad
Danke, geändert.
Hi,
Thargor:
Versuch mal herauszufinden, ob noad überhaupt korrekt gestartet wird. Wenn es läuft, kannst Du den noad-Aufruf um den Parameter -vvv ergänzen und Dein Syslog-File (normalerweise /var/log/messages) beobachten. Da sollte zu sehen sein, ob und was noad gerade macht.
wirbel:
Ich hab auch die mpeg2dec-0.4.0b im Einsatz. Läuft bei mir einwandfrei. Die Aussage "das Ergebnis war nicht sehr toll" finde ich ein wenig unpräzise...
Gruß
theNoad
Hi,
für noad sollten die Aufnahmen schon 30 Min. oder länger sein, sonst arbeitet die Logoerkennung nicht gut. Ich habe noad für den Einsatz von Serien- und Filmaufnahmen konzipiert, für "Schnipselverarbeitung" ist noad nicht geeignet.
Gruß
theNoad
Hi atommyk,
die Version 0.3.2b sollte eigentlich keine fehlerhaften Marken produzieren. Vielleicht hift
dieser thread weiter?
theNoad
Hallo Zwerg,
schau mal, ob Du in /usr/lib noch eine andere Version der libmpeg2 stehen hast. Die muss ggf. entfernt werden, oder Du musst die neue libmpeg2 dorthin installieren.
Gruß
theNoad
ZitatWas das jetzt wohl wieder ist ... ?
Ein Fehler im script. Einfach das do am Anfang der Zeile "do find..." entfernen.
Gruß
theNoad
Hi,
http://www.freepgs.com/noad/
ist die aktuelle Seite von noad. Die alte Seite auf rgob.com wird nicht mehr weitergeführt. Ich werde dort mal einen Verweis auf die neue Seite eintragen und sie dann langsam einschlafen lassen. Ich warte nur noch, bis ich auch mit der neuen Seite in google mit dem Suchbegriff "vdr werbefrei" auf Platz 1 auftauche
Gruß
theNoad
P.S.:
Transfer Summary:
Today:
16.20 MB
Month total:
20.13 MB / 1.00 GB (1,003.86 MB available)
Hi,
ich hab diesen Fehler auch. Ich meine, daß es von der DVB Treiber-Version abhängig ist. Schau doch mal ins Archiv der VDR-ML.
Gruß
theNoad