noad ist ein Programm, da an Hand der Senderlogos eine Erkennung von
Werbeeinblendungen vornimmt und Schnittmarken zum entfernen der Werbung erzeugt.
noad kann direkt aufgerufen werden oder als command fr vdr eingebunden
werden(option -r oder --recording in vdr).
Die Logo-Erkennung basiert auf einem Programm von Thorsten Janke, das Original-
programm und die dazugehrige Diplomarbeit sind hier zu
finden: http://www.ktet.fh-muenster.de/ina/node1.html.
Neben der reinen Logo-Erkennung werden auch weitere visuelle Merkmale zur
Erkennung der Werbeblcke herangezogen. Bei Aufnahmen, die oben und unten
schwarze Balken haben, werden dies dazu verwendet, die Schnittmarken besser zu
positionieren. Bei Aufnahmen ohne diese Balken wird eine genauere Positionierung
der Marken durch Schwarzbilderkennung versucht. Optional werden Wiederholungen
von Filmsequenzen nach einer Werbeeinblendung gesucht und die Marken bei gefundener
Wiederholungssequenz angepasst.
Ab Version 0.4.0 ist auch eine Werbeerkennung an Hand der Sound-Umschaltungen 
mglich. Ist der Parameter --ac3 angegeben, wird zuerst untersucht, ob die Aufnahme 
ac3-sound enthlt. Ist dies der Fall, wird an Stelle des Logo-Scans ein Sound-Scan 
durchgefhrt. Dieser ist deutlich schneller als der Logo-Scan.

noad luft als eigenstndiges Programm und ist von der verwendeten VDR-Version
unabhngig, solange die File-Formate von VDR nicht gendert werden.
noad nutzt neben den eigentlichen mpeg-dateien (*.vdr) die Index-Datei von VDR und
schreibt die Ergebnisse in die marks.vdr.

Erzeugung:
Vor dem erzeugen von noad ist die libmpeg2, Version 0.3.1 oder 0.4.0, zu installieren.
(siehe http://libmpeg2.sourceforge.net)
Danach einfach im Source-Verzeichnis den blichen Dreisatz configure/make/make install aufrufen.

Aufruf:noad [options] cmd <record>
options:
-s <filename>   --statisticfile=<file>
                Name der datei, in der Statistik-Daten gespeichert werden
-v              --verbose
                erhht den Log-Level, kann mehrfach angegeben werden
-b              --background
                lsst noad als Hintergrundprozess laufen
-p              --priority
                Prioritt wenn noad als Hintergrundprozess luft [20...-20] default 20
-c              --comments
                fgt Kommentare zu den Marken hinzu
-o              --overlap
                erkennt Wiederholungssequenzen vor/nach der Werbung
-a              --ac3
                experimentell: nutzt in Aufnahmen mit ac3-sound die
                Sound-Umschaltungen 5.1/2.0 zur Erkennung von Werbeblcken
-j              --jumplogo
                erkennt vertikal verschobene Senderlogos
-O              --OSD
                sendet eine OSD-Message an VDR(localhost:2001) fr Start und Ende
-S              --savelogo
                speichert das erkannte Logo
-B              --backupmarks
                sichert eine vorhandene marks.vdr nach marks0.vdr
-n              --nelonen
                special behavior for finish stations
-V              --version
                zeigt die Versionsnummer und endet dann
                
                --markfile=<markfilename>
                set a different markfile-name
                
                --online[=1|2] (default is 1)
                  start noad immediately when called with "before" as cmd
                  if online is 1, noad starts online for live-recordings
                  only, online=2 starts noad online for every recording
                  live-recordings are identified by having a '@' in the filename
                  so the entry 'Mark instant recording' in the menu 'Setup - Recording'
                  of the vdr should be set to 'yes'
                  
                --asd
                  audio silence detection
                  noad mu mit ffmpeg-support kompiliert sein (siehe configure --help)

cmd: eins von
       before      von vdr, wenn mit der Option "-r" in vdr eingebunden
                   noad beendet sich sofort, wenn dieses cmd gegeben wird und
                   --online nicht angegeben ist
       after       von vdr, wenn mit der Option "-r" in vdr eingebunden
       -           dummy-parameter fr Direktaufruf
       nice        noad luft mit geringer Prioritt
<record>    vollstndiger Pfad des Verzeichnisses mit der Aufnahme, die bearbeitet werden soll


Beispiele:
  Direktaufruf, Scan mit voller Prozessorleistung:
  noad - /video/Akte_x/2003-07-18.22.08.50.50.rec

  Direktaufruf, Scan mit voller Prozessorleistung, Statistikdaten nach /video/noadstat schreiben:
  noad --statisticfile=/video/noadstat -/video/Akte_x/2003-07-18.22.08.50.50.rec

  Direktaufruf, Scan als Hintergrundprozess mit geringer Prozessorleistung:
  noad nice --background /video/Akte_X/Roland/2003-08-22.22.03.99.99.rec

  Einbindung in VDR:
  vdr -r'noad [options]'

noad bentigt Schreibrechte in den Aufnahmeverzeichnissen!

Einbindung in VDR:
noad kann als Programm zur Nachbearbeitung einer Aufnahme ber den Paramter -r beim Aufruf von VDR angegeben werden.
Bei Systemen, die ber den VDR automatisch abgeschaltet werden, ist zu beachten, da der Rechner nicht
runtergefahrenwerden sollte, solange noad noch aktiv ist. Wer noad lieber gezielt fr einzelne Aufnahmen 
starten mchte, kann sich einen passenden Eintrag in der reccmds.conf eintragen.
Beispiele:
vdr-Aufruf mit noad-Aufruf automatisch nach jeder Aufnahme:
vdr <andere vdr-Parameter> -r'/usr/local/src/noad-0.4.1/noad --statisticfile=/video0/noadstat'
BEACHTE: noad und die Parameter mssen in ' eingeschlossen sein.
BEACHTE: Es wird kein Parameter 'cmd' angegeben, da vdr dies automatisch fr uns erledigt

Eintrag in der reccmds.conf:
Werbung scannen: /usr/local/src/noad/noad nice --background -O -C -a -j --statisticfile=/video0/noadstat'
BEACHTE: Hier mu ein cmd-Parameter angegeben sein (nice oder -), auerdem MUSS der Parameter --background angegeben 
werden, da sonst der vdr-Watchdog nach einiger Zeit einen Neustart des vdr auslst!
 


Fr das Bearbeiten vorhandener Aufnahmen sind 3 Scripte dabei:
allnoad
Aufruf: allnoad <videodir> [additional_noad_args]
        ruft noad mit dem cmd "-" fr alle vorhandenen Aufnahmen im Videoverzeichnis auf
        allnoad /video --statisticfile=/video/noadstat -v

allnoadnice
Aufruf: allnoadnice <videodir> [noad-args]
        ruft noad mit dem cmd "nice" fr alle vorhandenen Aufnahmen im Videoverzeichnis auf
        Beispiel:
        allnoadnice /video --statisticfile=/video/noadstat --verbose --verbose

allnewnoad
Aufruf: allnewnoad - <videodir>  [additional_noad_args]
        oder
        allnewnoad nice <videodir>  [additional_noad_args]
        ruft noad mit dem cmd "-" oder "nice" fr alle ungeschnittenen Aufnahmen im Videoverzeichnis auf,
        fr die es keine Schnittmarkendatei gibt. Bentigt Zugriff auf das Script "noadifnew"
Dies 3 Scripte sollten nicht mit dem Parameter "--background" aufgerufen werden, da sonst die Scans fr
alle Aufnahmen gleichzeitig gestartet werden.

noad speichert das erkannte Logo im Verzeichnis der Aufnahme unter dem Namen "cur.logo". Dieses Logo
wird bei einem erneuten Aufruf wiederverwendet, so da die Logoerkennung dann entfallen kann.
Ab Version 0.3.3 wird das Logo nur gespeichert, wenn der Parameter --savelogo angegeben wird.
Die gespeicherten Logos knnen mit dem script "clearlogos" entfernt werden.

Statistikdaten:
Wird noad mit "--statisticfile=<file>" aufgerufen, werden in die angegebene Datei einige Statistikdaten
geschrieben. Fr jede gescannte Aufnahme wird eine Zeile in die Datei geschrieben. Das letzte Feld in der
Zeile enthlt immer den Text "add your comment here". Dieses Feld kann mit Bemerkungen ber den Erfolg
des Scans berschrieben werden, dabei drfen keine Zeilenumbrche eingefgt werden. Ab Version 0.3.4
wurde die Statistik-Ausgabe von noad erweitert. Eine vorhandene Statistikdatei kann mit dem
Script 'statupd' auf das neue Format umgestellt werden. Die Statisik-Daten knen mit dem Script
"stat2html" in eine HTML-Datei umgewandelt werden. Dieses Script prft bei der Umwandlung die  einzelnen
Zeilen der Statistik-Datei und fhrt ggf. automatisch ein Update auf das neue Format durch. Die
HTML-Ausgabe wurde um einige Summenfunktionen ergnzt und optisch etwas aufgefrischt.

Zu den neuen Mglichkeiten:
--overlap: Kann zu fehlerhaften Marken bei Sendungen mit relativ statischem Bildinhalt fhren,
           wie z.B. Harald Schmidt Show, sonst bisher gute Ergebnisse (Test: emergency room, Ausstrahlungen um 20:15)
--ac3: Ist noch im Test-Stadium, kann/mu noch verbessert werden

--markfile=<markfilename>
  Mit diesem Parameter kann eine andere Mark-Datei angegeben werden. Dieser Parameter ist nur fr Testzwecke 
  gedacht.
--online:
  Wenn dieser Parameter angegeben ist, wird noad bei Aufruf mit cmd=before bereits whrend der Aufzeichnung
  gestartet. Ist --online=2 angegeben, passiert dies bei jeder Aufnahme, sonst nur bei live-Aufnahmen.
  Der online-scan startet ca. 2 Minuten nach Beginn der Aufnahme und wird danach alle 15 Sekunden fortgesetzt.

noad online -- wie geht's?
Um noad bereits whrend der laufenden Aufnahme zu starten ist als zustzlicher Parameter --online anzugeben. Damit
startet noad auch dann, wenn als cmd 'before' angegeben wird. Ohne zustzliche Angaben wird noad dann nur fr 
live-Aufnahmen gestartet, diese erkennt noad daran, da im Namen der Aufnahme ein '@' auftaucht. Dies funktioniert 
jedoch nur, wenn im VDR im Men Aufnahmen der Eintrag "Direktaufzeichnung markieren" auf 'ja' gesetzt ist. Mchte man
noad bei jeder Aufnahme sofort mitlaufen lassen, so ist --online=2 anzugeben. 
Wenn noad vom VDR mit dem cmd 'before' aufgerufen wird sind die Verzeichnisse fr die Aufnahme noch nicht erstellt.
Daher wartet noad zunchst 60 Sekunden, bis der VDR die Verzeichnisse erstellt und mit der Aufzeichnung begonnen hat.
Anschliessend wird eine weitere Pause eingelegt, bis der VDR mind. 3000 Frames (2 Minuten) aufgezeichnet hat.
Jetzt beginnt der scan in der blichen Weise: je nach Einstellung wird versucht, das Logo zu finden bzw. zu erkennen, 
ob in der Aufnahme ac3-sound auftaucht. 
Wenn Logo oder ac3-sound erkannt wurden wird die erste Marke gesetzt. Danach wird der scan alle 15 Sekunden fr die
neu hinzugekommenen Frames fortgesetzt.
Wird noad mit dem Parameter --overlap aufgerufen, wird 250 Sekunden nachdem eine On-Marke gesetzt wurde die 
overlap-detection fr die zueletzt gefundenen Marken durchgefhrt
Stellt noad fest das nach einer Pause keine neuen Frames hinzugekommen sind beendet es sich.

noad vs noad
Bei dem blichen Ablauf (Aufruf von noad aus dem vdr) wird noad nach Ende einer Aufzeichnung vom VDR erneut mit
dem cmd 'after' aufgerufen. Zu diesem Zeitpunkt wird aber i.A. die noad-Instanz, die mit 'before' aufgerufen wurde,
noch aktiv sein. noad stellt dies fest und wartet bis zu 6 Minuten darauf, da sich die vorherige Instanz beendet. 
Geschieht dies nicht, wird versucht, die laufende Instanz per Signal zu beenden. Anschlieend wird der normale
scan durchgefhrt. Damit dies funktioniert mu noad bei 'before' und 'after' mit den gleichen Einstellungen 
fr '--online' aufgerufen werden.

noad online und vdr
Damit man eine Aufnahme zeitversetzt ohne Werbung geniessen kann sind einige nderungen am VDR vorzunehmen. 
Bei der Wiedergabe mu die Schnittmarkendatei zyklisch neu eingelesen werden, damit die zwischenzeitlich von noad 
gefundenen Marken verwendet werden. Dies sollte aber nur geschehen, wenn es sich bei der Wiedergabe um eine 
laufende Aufnahme handelt. Bei Verwendung des jump-play-patches mu dieser so erweitert werden, da die Wiedergabe 
nach der letzten Marke nicht automatisch beendet wird, wenn es sich um eine laufende Aufnahme handelt.
Diese nderungen sind zusammen mit dem jump-play-patch als erweiterter jump-play-patch auf der noad-Seite
zu finden. Der Patch liegt zur Zeit fr den vdr-1.3.7 vor und mu ggf. von Hand angepasst werden.
Mit dem jump-play-patch werden die in der Aufnahme gefundenen Werbeblcke bei der Wiedergabe automatisch 
bersprungen. 
Um eine laufende Aufnahme werbefrei zu geniessen sollte man einen Zeitversatz, je nach Dauer der Sendung, 
von 15-30 Minuten vorsehen.

Hinweis:
Der scan whrend einer laufenden Aufnahme ist z.Z. noch in der Entwicklung. Derzeit werden die Marken nur bei
Logo-Wechsel oder sound-Wechsel gesetzt und ggf. durch die overlap-detection verbessert.
Die Statistik-Daten werden z.Z. im online-Modus nicht korrekt geschrieben, wer die noad Statistik verwendet sollte
fr den online-scan eine separate Statistikdatei verwenden. Dies kann man dadurch erreichen da man noad nicht direkt
aus dem vdr aufruft sondern ber ein kleines Aufruf-Script, das die Statistikdatei je nach Aufruf ndert. 
Ein Beispielscript hierzu ist mitgeliefert (noadcall.sh).

Ab noad 0.6.0:
asd - audio silence detection
Untersuchungen der Aufnahmen haben gezeigt, da an den Schnittstellen von clips i.A. eine kurze Tonpause auftritt. 
Diese Pause ist so kurz, da sie bei der normalen Wiedergabe nicht bemerkt wird. noad kann diese kurzen Pausen im
Audio-Stream erkennen und damit (manchmal) die Programmvorschau mit Logo vom eigentlichen Programm unterscheiden.
Um asd zu nutzen, muss die libavcodec von ffmpeg installiert sein. Damit noad die libavcodec nutzt ist 
configure mit "--with-ffmpeg" aufzurufen, ggf. mit "--with-ffmpeginclude" und "--with-ffmpeglibdir" die Pfade zu den 
ffmpeg headern und libs setzen. Danach ein "make", und dann kann noad mit "--asd" aufgerufen werden.
asd ist z.Z. noch nicht im online-scan integriert.


Fehlermeldungen, Anregungen, Hinweise und auch Erfahrungsberichte an: theNoad@SoftHome.net
