Beiträge von 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,

    Zitat

    So 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

    Zitat

    Feb 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

    Code
    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.


    Zitat

    Ich 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.


    Zitat

    Keine 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


    Zitat

    Ich 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)


    Zitat

    Ein 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.


    Zitat

    videos 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.


    Zitat

    wer 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.


    Zitat

    Gerade 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,


    Zitat

    die ganzen erkennungsmeschanismen könnten doch auch on the fly möglich sein

    Das ist und bleibt mein Ziel mit noad.


    Zitat

    es 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.


    Zitat

    ich kenn mich natürlich mit dem noad plugin nicht so gut aus

    ...weil noad (noch) kein plugin ist ;)


    Zitat

    eventuell könnte man auch die charateristik eines werbeanfang jingles einprogrammieren oder ähnliches.

    Schnapp dir die Sourcen und fang an :)


    Zitat

    was 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,

    Zitat

    make: *** 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,


    Kirnbichler

    Zitat

    Die 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:

    Code
    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

    Zitat

    Fehlermeldungen, 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:

    Zitat

    Das 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

    wirbel:

    Zitat

    nicht 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?

    Zitat

    Werden 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

    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,


    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)