Commercial Scanner

  • Hallo,


    auf http://www.powarman.de/vdr_commscan.htm habe ich mal das Ergebnis meiner Studienarbeit vom letzten Wintersemester an der TU Ilmenau bereitgestellt. CommScan durchläuft VDR Aufnahmen und versucht die Übergänge zwischen Werbung/Programm zu erkennen. Diese Übergänge werden dann als Schnittmarken in die marks.vdr geschrieben.
    Als Erkennungsmethoden wird eine Kombination aus Logo- und schwarze-Rand-Erkennung verwendet. Außerdem werden noch die Spezialfälle Schwarz-Weiß und Dolby Digital Ton behandelt.
    Im Moment funktioniert das ganze nur für die Sender Pro7, Kabel 1 und RTL mehr oder weniger gut, für andere Sender müssten erst noch Logo-Templates erzeugt werden.


    MfG
    Andreas

  • Wow.


    Das hat sich auf der Webseite so gut gelesen dass ich mir das gleich ausdrucken musste - ich hab nämlich über was ähnliches schon nachgedacht, da erspar ich mir unter Umständen Arbeit ;)

  • hi,
    erste versuche sehen nicht schlecht aus
    bloss pro7 hat doch gerade diese winpin sendung im programm das stört etwas, denn das programm erkennt dann wen das sendelogo weggeht das eine werbung kommen sollte, ist aber nicht so sondern nur dieses doofe winpin, und schneidet dann bis zum nächsten werbung-ende alles weg.
    da muss man dann nochmal mit der hand nachgehen.


    werde aber weitertesten.


    mfg
    ernie

  • Hallo,


    leider lässt es sich nicht kompilieren :(


    Zuerst wollte es ffmpeg/avcodec.h nicht finden können. Da habe ich mich geholfen in dem ich den gesamten pfad eingepflegt habe.


    # gcc -v
    gcc version 2.95.3 20010315 (SuSE)
    (Suse 8.0)


    Aber jetzt kommt :
    [/code]# make
    g++ -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE audio.cpp
    g++ -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE feature.cpp
    feature.cpp:560: warning: `/*' within comment
    feature.cpp:668: warning: `/*' within comment
    g++ -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE global.cpp
    g++ -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE main.cpp
    g++ -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE pes.cpp
    g++ -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE recording.cpp
    g++ -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE scanner.cpp
    g++ -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE stream.cpp
    g++ -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE tools.cpp
    g++ -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE util.cpp
    g++ -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE video.cpp
    video.cpp: In method `cRawVideoFrame::cRawVideoFrame(AVFrame *, int, int)':
    video.cpp:32: parse error before `['
    video.cpp:38: parse error before `['
    make: *** [video.o] Error 1[/code]



    Gruß
    Viking

  • Ok, ich bin wohl zu doof dafuer. Ich habe auch gcc 2.9.5-3 und habe auch das problem, das die libavcodec.h nicht gefunden wird. Ich hab mir die Muehe gemacht und alle vorkommnisse im source abgeaendert, aber beim linken geht es immer noch nicht.


    Welche Version von ffmpeg brauch ich?
    Warum zeigen die include-anweisungen nach ffmpeg und nicht nach ffmpeg/libavcodec?


    Warum bekomm ich beim linken:

    Code
    http://fvideo.o: In function `cMPEGVideoFrame::Decode(void)':
    /home/schertha/commscan/video.cpp:131: undefined reference to `avcodec_alloc_frame'
    collect2: ld returned 1 exit status
    make: *** [commscan] Fehler 1


    mit ffmpeg 0.4.6?


    und es ware so schoen gewesen...


    Frank

    AMD E4050, Debian testing/unstable, TT S-1401 + TT S2-3200 (ein Kabel LNB-Shared), VDR1.7.xx+Extensions-patch und so ziemlich jedem Plugin, das es auf der Welt gibt...

  • Moin,


    Die die Dateien avcodec.h und common.h aus dem libavcodec Ordner sollten nach /usr/include/ffmpeg kopiert werden und die i386/mmx.h ins /usr/include/ffmpeg/i386
    Mit irgendeiner make Anweisung vom ffmpeg geht das auch automatisch.


    Und es funktioniert wohl nur die Version 0.4.6 von ffmpeg. In der aktuellen CVS version hat sich wohl schon wieder was am API geändert.


    MfG
    Andreas

  • Griasde!


    Zitat

    Original von powarman
    Die die Dateien avcodec.h und common.h aus dem libavcodec Ordner sollten nach /usr/include/ffmpeg kopiert werden und die i386/mmx.h ins /usr/include/ffmpeg/i386
    Mit irgendeiner make Anweisung vom ffmpeg geht das auch automatisch.


    Nun, ganz einfach: :D ./configure --enable-shared


    Pfiade,
    Django


    :evil: Nichts ist wahr, alles ist erlaubt! :evil:


    VDR-Server: ASUS A7V8X, Duron 1.300, 256 MB, 3x 120 GB Maxtor HD, PIONEER DVR-106, Design Tower AIR Black, 40x4 LCD,
    1x TT-DVB-S V1.6, 3x DVB-S Nova, URC-7562, CentOS 5.5, VDR: 1.6.0


    TecVDR: AOPEN MK73LE-N, Duron 1.300, 256 MB, 1x 120 GB Samsung HD, Pioneer DVR-A04, Gehäusesonderbau, 1x TT-DVB-S V1.6 4MB, 1x DVB-S Nova, 1x AV-Board, SuSE 9.0, VDR: 1.3.11

  • Hallo Povarman,


    wie gesagt nettes teil. Wenn es erst als plugin läuft und während der aufnahme scannt - WOW :D


    Jetzt zum testergebniss.
    Ich habe verschiedene aufnahmen von RTL und Pro7 gemacht und bin leider "auf die nase" gefallen mit den meistens scans.


    RTL mit analog sound und Pro7 mit DD 2.0 : keine markierungen :(
    Pro7 mit DD2.0 und anfang vom nächsten film mit AC3 5.1 - leider hat er hier den nächsten film (5-6 min) markiert und nicht den eigentlich aufgenommen film.


    Pro7 mit AC3 5.1 - alles super. Ich musste nur die markierungen feinjustieren - das war GEIL :D


    Es sieht so aus als ob irgend etwas mit dem Scanner bei mir nicht richtig läuft !?


    Gibt es eine möglichkeit logging einzuschalten und irgendwie zu beobachten was er macht ?


    Kann es ein das die aufnahmen nicht lang genug waren und damit nicht genug werbung ?
    Was passiert eigentlich wenn man die aufnahme abspielt während der scanner läuft ?


    Der AC3 Scan ist schon klasse :D
    Vieleicht sollte er nur checken ob nicht der AC3 teil zu klein ist um den gewollten teil der film zu sein ;)
    Verstehe mich nicht falsch es ist schon ein RIESEN fortschritt das ich AC3 filme automatisch markieren kann :)


    Ach ja, eine bitte noch - ich nehme recht viel auf bei KIKA für meine Tochter wenn es läuft mit den "normalen" sendern würde ich mich unheimlich über eine anleitung zur erstellung+einbindung von weitere logos oder fertige für KIKA :)


    Wenn es läuft werde ich mal einige scripte schreiben, so ähnlich vdr2divx (vermutlich da ausleihen) mit warteschlange so das man mehrer dateien scannen kann in "einen rutsch". Zumindest so lange bis das Plugin da ist.


    Gruß
    Viking

  • Hi


    Zitat

    Der AC3 Scan ist schon klasse
    Vieleicht sollte er nur checken ob nicht der AC3 teil zu klein ist um den gewollten teil der film zu sein
    Verstehe mich nicht falsch es ist schon ein RIESEN fortschritt das ich AC3 filme automatisch markieren kann


    Bei meinen (eigestellten) ad_scanner Versuchen haben wir mal diskutiert, wie man die Aufnahmezeit in den Scanner integrieren kann. EIgentlich ist das sehr gut möglich, wenn man aus der setup.conf die "Zuschläge" am Anfang und am Ende einer Aufnahme ausliest. Konkretes Beispiel:


    In der Setup.conf steht drin, dass die Aufnahme 5 min vor dem Filmstart beginnen soll, und 10 min nach Ende aufhören soll.
    Mit den Creation-Times des ersten .vdr Files und der Modify Time des letzten .vdr Files kann man so ganz genau rauskriegen, von wo bis wo der FIlm läuft - voraussgesetzt, dass es keine Verschiebung im Programm gibt.


    Dann könnte der Scanner schauen, ob er bei der wirklichen Start-Zeit einen Filmanfang detektieren kann, und wenn ja, alles nach dem wirklichen Filmende in der Aufnahme ignorieren.


    Alternativ wäre es schön, wenn der Scan abgebrochen würde, wenn kein Filmanfang nach NN Minuten gefunden werden kann.


    Achja, super wäre auch, wenn man definieren könnte, welche Kriterien für welchen Scan verwendet werden sollen, also nur schwarze Balken oder nur AC3, oder beides zusammen, oder nur logo etc.
    Und ganz klasse natürlich, wenn es eine per-Sender Einstellung gäbe:
    Pro7: Nur schwarze Balken und AC3
    Sat1: Nur logo und AC3
    oder so...


    Dann kann man auch auf Sendern, für die kein Logo existiert, scannen. Pro7 funktioniuert ja schon allein mit dem Balken-Scanner ziemlich gut, zusammen mit AC3 kann man dann wohl aufs Logo verzichten und die dynamischen logos stören nicht mehr ;)


    Cheers


    doc

    Mitstreiter für VDRsync gesucht!
    Egal ob Perl Programmierer, Tester, Doku-Schreiber oder User, jede Hilfe ist willkommen. Infos hier im Board (nach vdrsync suchen) oder auf der vdrsync-Homepage

  • moin,


    viking:
    beim AC3 Scanner fehlt noch so ein check ob das ganze lang genug ist, deswegen markiert er nur den hinteren Teil.


    unter /usr/local/commscan wird ein Logfile namens test1.log angelegt, da werden die daten der einzelnen Erkennungsmethoden gespeichert.


    MfG
    Andreas

  • Hallo,


    Zitat

    viking:
    beim AC3 Scanner fehlt noch so ein check ob das ganze lang genug ist, deswegen markiert er nur den hinteren Teil.


    OK. Kann ich erst mal mit leben.


    Ich habe noch mal kompiliert mit dem korrekten configure (mmx.h muß aber immer noch per hand nach /usr/include/ffmpeg/i386 verschoben werden). Und dann einige weitere scanns auf der kommandozeile aufgerufen


    Es scheint das der commscan manschmal einen Segementation fault macht und deshalb nicht scannt.


    Desweiteren hatte ich eine aufnahme von Pro7 mit DD 2.0 gescannt - alles super ! :)


    Da bei den anderen aufnahmen keine marks.vdr raus kam denke ich mal das es evt. an dem seg.fehler lag. Da ich sie nur zum testen aufgenommen hatte und mittlerweile wieder gelöscht habe versuche ich mal noch mal was aufzunehmen um zu testen.


    Wie schwierig ist es eigene "logos" für andere Sender mit einzubauen ?


    Gruß
    Viking

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!