Beiträge von Doc

    Hi Dimitri



    Wieso brauchst Du das nicht mehr bzw wie machst Du es denn jetzt?


    Cheers


    doc

    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

    Hallo Peter,


    Zitat

    Wie verhällt es sich bei einem Kabelanschluss? Kann ich dort auch mit einer Karte verschiedene Sender aufnehmen?


    So wie bei der DVB-s auch, die Sender, die auf demselben Transponder liegen, kann man (oder besser: werden) gleichzeitig empfangen. Aufgenommen habe ich noch nie 2 gleichzeitig, aber auf einen anderen Sender auf demselben Transponder während der Aufnahme umgeschaltet schon - Kein Problem bei Aufnahme oder Wiedergabe.


    Cheers
    doc

    Hi Django,

    Zitat

    Da ja anscheinend derzeit das dvd-plugin keinen PCM-Sound verdauen kann, frage ich mich, ob man eine Umkonveretierung des Stereo-Signales in AC3 in Deinem und Dimitri's scriptsammlungen mit integrieren könnte.


    hmm, wahrscheinlich könnte man das schon machen, allerdings kenne ich micht nicht mit dem DVD-Plugin aus (meine VDR Box hat kein DVD Laufwerk).


    So, ich habe gerade den Thread gefunden, in dem das besprochen wurde.


    Ich kenn mich mit Konvertierung zu AC3 auch nicht aus, kann transcode das, oder reicht transcode AC3 nur durch? Es gibt doch eine liba52 oder so, kann die nur decoden oder auch encoden? (ok, habe gerade selbst gegoogelt, die liba52 ist zum decoden).


    Wenn Du was zum Thema AC3-Erzeugung unter Linux finden solltest, dann poste doch mal die Infos. Nach dem sync-Durchlauf könnte man auf jeden Fall noch ein anderes Tool aufrufen, oder mehrere ;) Am liebsten allerdings gleich ein Tool, was eine FIFO akzeptiert, dann kann Audio gleich konvertiert auf die Platte geschrieben werden.


    Cheers


    doc

    Hi MeMeD


    Zitat

    So, da das da oben wohl kaum jemandem was nützt


    das würde ich jetzt nicht behaupten, ich finde das Konzept ziemlich gut.


    Zitat

    hier mal knapp und kurz meine idee vom ablauf: list_mgr.sh -> wird in reccomds.conf benutzt um listen zu erstellen und oder aufnahmen direkt als konvert-job starten [jobs laufen als hintergrund job(at)] - aufnahmen werden mit vdrsnc.pl synchronisiert, und ggf. für mencoder gezielt mit einem A/V offset versehen + multiplexed - vdrsync ermittelt die laufzeit in sekunden um ziel bitraten (cd/dvd) zu errechenen - mencoder wandelt (mit zielbitrate) das mpeg im 2-pass verfahren um, zusätzlich werden noch einige besonderheiten beachted: aspekt wird in mepg4 eincodiert, ziel ordner entsprechen vdr ordner strucktur,avi hat von ordnernamen abgeleiteten dateinamen, aufteilung und re-indexing für multi cd splitting, mp3 reencoding nun die frage, ob ein script alle unter scripte aufruft, oder ob ein script an das nächste übergibt, wer hat vorschläge, oder fragen ....


    Hast Du Dir mal die vdrconvert Skripte von Dimitri angeschaut? Was die grundsätzliche Vorgehensweise angeht, so sehe ich auch eine hauptsächliche Entscheidung:


    Welches Skript macht was? Etliche User, die vdrsync benutzen, scheinen bestimmte Feature nicht zu nutzen. Dabei wäre es sogar etwas schneller und würde Platz sparen, gleich zu entscheiden "AC3 will ich nicht, auch keine 2te Tonspur, ich rufe vdrsync mit der Option -ignore bd,c1 auf". Trotzdem will ich vdrsync schrittweise so erweitern, dass immer mehr Optionen eine möglichst flexible Nutzung, und damit auch Automatisierung ermöglichen. Für mich persönlich ist die DVD - Erzeugung am interessantesten, aber alle anderen Ausgabeformen sollten auch möglich sein. Entweder von vdrsync aufgerufen, oder vdrsync wird von einem Masterskript gesteuert und liefert neben den Streams notwendige Infos, das ist Geschmacksfrage und sollte beides möglich sein. Einbauen will ich die Features u.a. auch, weil ich ja für die Mausschubser unter uns noch an einer grafischen Oberfläche in Perl/Tk stricke, die wäre auch die Voraussetzung für mein Lieblingsfeature: Frame-genaues schneiden.


    Aber zurück zum Thema: vdrsync sollte auf jeden Fall:


    - die Audio-offset Option enthalten
    - eine Postexec-Option bekommen, die gleichzeitig
    - Dummy parameter wie VDRSYNCmovielength oder VDRSYNCgopnumber oder VDRSYNCaspectratio durch die wirklichen Parameter, die das postexec Kommando benötigt, ersetzt.


    Ausserdem stehen automatische DVD (Image) Erzeugung und single-pass DIVX mit transcode auf der Liste, letzteres ein Feature das Ernie schon eingefügt hat.


    Stellt sich die Frage, wann ich das fertig habe.
    Stand der Dinge:


    Ich habe ja in einem anderen Thread dokumentiert, wie man seine Zeit sinnlos verschwendet, indem man was versucht zu programmieren, was es schon gibt ;( Naja, erst googeln, dann coden ;)
    Allerdings habe ich als Grundlage dafür ein paar Funktionen schreiben müssen, die ich unbedingt in vdrsync haben will. zB "get_Gop_at_sec", also Funktionen, die es mir erlauben beliebige Stellen in der Aufnahme anzuspringen und zu analysieren. Für den ad_scanner habe ich das für den Video-Stream benötigt, gestern habe ich das auch für Audio implementiert.
    Diese Dinge sollten vdrsync einfach besser und sauberer machen, vor allen Dingen aber das Schneiden per vdrsync ermöglichen und eben auch eine grafische Oberfläche.
    Aber ich schweife schon wieder ab.


    Ich habe mich deshalb entschieden, erstmal ein intermediate-release zu basteln, was genau die obigen Punkte aufgreift (also Audio-Offset, -postexec und Dummy-variablen sowie transcode aufrufen und DVD-Erzeugung), bevor ich MPEGSTREAM.pm komplett neu aufbaue.


    Aber auch das habe ich noch nicht fertig, das sollte aber hoffentlich nicht so lange dauern. Ich schaue mal, wie weit ich an diesem Wochenende komme, und dann melde ich mich auf jeden Fall nochmals.


    Cheers


    doc

    Hi zusammen,


    @ Django

    Zitat

    Also mit der Option --vdrmarks kann man also die MArken zum Anwählen der Chapter verwenden. Ob und wie das Doc in sein vdrsync-Projekt mit einbaut, ist mir derzeit noch unbekannt. Ist aber sicherlich schon irgenwo in Arbeit!


    Ja, das habe ich auch schon überlegt. Allerdings "beisst" sich das mit dem Schneide-Feature, dass ich gerade versuche einzubauen. Also marks setzen und gleich (ohne Schneiden!) vdsync aufrufen, dass fände ich persönlich sehr angenehm. Vielleicht baue ich beides als Option ein ;)


    Cheers


    doc

    Hi Metrio,


    Zitat

    Original von metrio



    Mal abgesehen von Verschiebungen, wobei das epg ja auch nicht weiterhilft, hat man doch i.d.R. einen festen Offset zwischen Aufnahmestart und Filmbeginn.



    ne - vdr kann doch vor/nach Aufnahmen genauso wie beim Schneiden ein Script starten. Muss man da nur einbinden.


    Da kann man ja tatsächlich einen guten Teil der Probleme lösen :)


    Am besten also:

    • Beim Aufnahmestart die epg.data sichern.
    • Am Ende das Skript starten, dass dann aus dem Verzeichnisnamen und dem "Aufnahmeoffset" (den kriegt man aus der setup.conf) oder den EPG.Daten den Film Anfang und das Ende berechnet.
    • Innerhalb der Aufnahme lässt mit Hilfe der index.vdr ganz gut navigieren, das macht das Skript jetzt schon. Mit den zusätzlichen Infos gehts dann noch besser, da zB der nachfolgende Film nicht stört, von dem auch oft schon ein Stück in der Aufnahme drin steckt.


    Am besten noch eine per-channel config einlesen (Pro7 Balken oben und unten, Sender XY nur unten etc)


    Nur einbauen muss das jemand ;)


    Cheers


    doc

    Hi metrio,


    Zitat


    Ok - muss aber erst mal warten, bis wieder was mit Werbung kommt, und das passiert bei mir eher selten:-).


    Es reicht, wenn was mit schwarzen Balken kommt. Das Skript sollte dann marks am Anfang des Films und am Ende setzen ;)

    Zitat


    Trifft das auf das erste Stück nicht auch zu?


    Hmm, keine Ahnung.... wahrscheinlich schon. Naja, sonst wäre es auch zu einfach ;)

    Zitat

    Den Anfang zumindest könnte man aus dem Verzeichnisnahmen + Offset nehmen. Gibt aber auch irgendwo nen Patch, der das epg länger vorhält. Oder die Daten einfach vor jeder Aufnahme per Script sichern.


    Meine Verzeichnisnamen geben da nicht viel her, die enthalten den Aufnahmestart, aber nicht den Filmstart, oder liege ich da ganz falsch?
    Ein Patch ist ws nicht so gut, den benutzt dann wieder keiner. Eher die EPG Daten vorher sichern, aber dann muss das Skript immer laufen.


    Mal schaun...


    Cheers


    doc

    Hi zusammen,


    @ metrio

    Zitat

    nen Cropdetect über einen Teilbereich des Bildes kannst du (ungetestet) z.b. so machen: mplayer -vop cropdetect=40,crop=708:432:6:72 001.mpg


    Das klappt leider nicht, schade :(

    Zitat

    Man könnte auch manuell eine Schnittmarke an 1 oder 2 für die Aufnahme repräsentativen Stellen setzen. Vielleicht würde das dem Script helfen.


    Eventuell könnte das script auch auf die Timer/EPG Daten zurückgreifen, aber das schaue ich mir jetzt erstmal nicht an.


    Zitat


    - Und weiterhin wäre es auch schon eine Hilfe, wenn das Script überall dort eine Schnittmarke setzen würde, wo es Werbung vermutet. Einen Mindestabstand zwischen solchen Marken müsste man wohl definieren. Dann müsste man die Werbung beim Schneiden wenigstens nicht suchen;-)


    Das sollte es jetzt schon tun, versuchs einfach mal ;)


    @ Taros666

    Zitat

    So darf in einer Stunde max. 20% Werbung (=12 min.) sein und das ganze muss als Block ausgestrahlt werden. Dabei darf es je nach länge nur eine bestimmte Anzahl von Blöcken geben und zwischen Werbeblöcken MÜSSEN 20 min. "normales" Programm sein! (wenn also sicher eine Werbung gefunden wurde kann die naechste erst wieder in 20 min kommen!) (ich glaube es sind max. 2 Bloecke/h) Wenn bei Pro7 immer 7-8 min Werbung ist liegt das an der Eigenwerbung/Programmhinweisen, die nicht als Spotwerbung angesehen wird...


    Tjaaaa, das könnte man eigentlich ganz Klasse ausnutzen, aber der Teufel steckt im Detail...


    Das letzt Stück Film muss offensichtlich nicht mehr 20 min lang sein. Nur der Abstand zwischen den Werbeblöcken muss so lang sein.
    Was heisst das für das Skript? Wenn das Skript die Uhrzeit des Movie-Anfangs und des Movie-Endes kennen würde, dann könnte es ganz prima funktionieren:
    Den genauen Anfang suchen (aus der File-Creation Time und der Anzahl der aufgenommenen Frames), dann mindestens 20 min movie voraussetzen, dann die Werbung suchen und wieder 20 min Movie vorausssetzen usw. Bis zum letzten Movie-Block, da weiss das Skript dann aber, dass der Film gleich sowieso zu Ende gehen muss, also auch gut.



    Aber:
    - Es gibt kein VPS, was passiert also bei Verschiebungen?
    - Das Skript nutzt auch die EPG Daten bis jetzt nicht, und die bräuchte man. (wie lange bleiben alten Daten eigentlich in epg.data drin? Vielleicht würde das ja reichen. Oder bekommt man die Daten auch woanders her (jaja, über TVTV oder so))
    - Die Sender fangen ja auch gerne mal etwas später an.
    - Es gibt ja nicht nur deutsche Sender


    Fazit:


    Man könnte noch gaaaanz viel optimieren, mit ebensoviel Aufwand, aber erstmal liegt das Ding zum Testen bereit. Wenn es bei einigen Usern so gut funktioniert, dass sie sagen würden "Ja, das will ich automatisch nach jeder Aufnahme laufen lassen", dann kann man es ja weiter tunen. Wenn nicht, dann lohnt der Aufwand nicht...


    Cheers


    doc

    Hi Taros666,


    Zitat

    Original von Taros666
    Mangels ungeschnittenem Material konnte ich das script noch nicht testen, aber ich hab noch was:
    - Schwarzbild analyse: Zwischen jedem Werbespot und jedem Werbeblock sind kurze Momente eines echten Schwarzbilds zu sehen.


    Das ist interessant, allerdings ist Darth Vader vor dunklem Hintergrund auch "komplett" schwarz für mplayer...

    Zitat


    Das Problem von VDR ist aber, dass es den Stream so aufnimmt, wie er gesendet wird und man beim schneiden immer I frames treffen muss. Mit etwas Glueck ist der I-Frame ein Schwarzbild, in der Regel aber leider nicht :(


    Das ist ein generelles Schneide Problem, aber keines für die Erkennung.... Man könnte sowas machen wie: Kurze, schnelle Schwarzbild-wechsel beweisen Werbung. Allerdings klappt das mit der Werbung bei meinen Tests ganz gut, die blöden Programm-Hinweise ärgern noch mehr.

    Zitat


    EIn Programm fuer Windows, das so zeimlich alles beruecksichtigt was es gibt ist Karin:
    http://toonarchive.com/karin/main.php3


    Mit vollem source :)


    Cool, ich kann ja mal schauen, was ich so verstehe

    Zitat


    Ich weiss, dass das nix fuer Dich ist DOC, da Du (wie ich) lieber scriptest als OO zu programmieren, aber die Ansaetze sind schon mal sehr gut und man kann sich die Durchführung anschauen.
    Das soll also keine Aufforderung an Dich persoenlich sein, das alles zu implementieren, sondern zeigen, was alles moeglich ist...


    Na, da bin ich beruhigt ;) Das mit dem Skripten ist nicht nur eine Frage des "lieber scripten", ich kann halt nicht wirklich programmieren. Allerdings habe ich versucht, auch vdrsync in OO perl zu schreiben, damit man es leichter wiederverwenden kann.


    Vielen Dank für die Tips :)

    Cheers


    doc

    Hi Taros666,


    ja, es gab auch hier im Board mal einen Thread, bei dem diese Dinge diskutiert wiurden - nur programmiert hat keiner was :(


    Zitat


    - Werbung wird lauter ausgestrahlt als der eigentliche Film (bis zu 120%!). Allerdings ist dann eine genaue Analyse der Maximalen Lautstärke noetig...nicht gerade einfach


    Vielleicht nicht schwerer als die anderen Sachen, da man auch per externem Programm eine Konvertierung in Wave vornehmen kann, und das ist nicht sooo schwer zu analysieren, glaube ich. Aber ich mag das aus einem anderen Grund nicht so gern - es gibt keine "scharfen" Uebergänge, nur wenn der Sender ein lautes Jingel reinballert. Und dieses Merkmal schwankt noch stärker als die schwarzen Ränder.


    Zitat


    - Werbung hat keine Logos. Es gibt da wohl irgendeinen Algo, der nach dem Logo sucht. Allerdings gibt es inzwischen Sender mit dynamischen Logos (RTLII, MTV...)


    Zum einen gibt es die dynamischen Logos, deshalb analysiere ich nur den unteren schwarzen Balken. Zum anderen kann ich gar keine Bildanalyse programmieren, sondern lasse mplayer für mich schuften :D

    Zitat


    - Das Tonformat ist bei manchen Filmen AC3/Dolby Digital, bei Werbung in der Regel nicht.


    Das wäre noch wirklich interessiert, ich kann das aber fast nicht glauben.... Vielleicht eher ein Wechsel von 5.1 auf 2 Kanal AC3?


    Zitat


    - Filme haben schwarze Balken (das ist Dein Ansatz)


    Nicht "meiner", aber den habe ich verwurstet;)

    Zitat


    - Werbung ist "hektischer" als ein Film (mehr Schnitte ind kutzen Abstaenden) aber man denke nur an eine Action-szene oder am Musikclips...


    Das ist auch nix für mich, ist ja wieder Bildanalyse. Und dann auch nicht mit statistischer Auswertung und so. Ich bin mehr der "if ... then" Programmierer ;)



    Zitat


    Bitte nicht aufhoeren

    Frank


    Hast Du das Ding denn schon mal ausprobiert ;)?


    cheers


    doc

    Hi Boergen,

    Zitat

    Original von Boergen


    Wenn das tatsächlich vernünftig funktioniert, kannst Du auf ein Leben voller Ruhm, Reichtum und Frauen freuen. :D


    Wäre ok für mich, ich muss mal mit meiner Feundin drüber sprechen ;)

    Zitat


    Ich werde das Skript heute Abend mal an den 7 Enterprise-Folgen ausprobieren, die noch in meiner Box schlummern. :]


    Na hoffentlich haben die schwarze Balken oben und unten, sonst wird das nix....


    Cheers


    doc

    Hi ernie,


    Zitat

    Original von ernie
    hi,
    danke funktioniert jetzt.


    Kannst Du das etwas genauer sagen ;)?


    Zitat


    aber etwas stimmt mich noch komisch.
    er hat die werbung als behalten gekennzeichnit,
    aber das kann ich auch einfach ändern indem ich im anfang
    und am ende eine schnittmarke setze.


    Ja, das mit den marks...... Ich habe nicht wirklich darauf geachtet, dass die Anzahl der marks stimmt, um die Movie-Abschnitte zu behalten und die Werbe-Abschnitte zu verwerfen. Das ist mir aber nicht weiter aufgefallen, weil alle meine Testaufnahmen mit Werbung anfangen, und mit Werbung aufhören.


    Zitat


    nochmal danke für das kleine programm


    mfg
    ernie


    Danke fürs Testen ;)


    Wenn es wirklich von Nutzen sein sollte, dann kann ich schon noch ein paar Kleinigkeiten verbessern. Kommt auf das weitere Feedback an :)


    cheers


    doc

    Hi ernie,


    Danke für das output.log, damit ist klar, was passiert.....


    Du hast mehr "Werbung" als "Movie" in Deiner Probe-Aufnahme:


    Zitat


    we got 218 for value 575, that is 218 of 402 or 54.228855721393 percent
    It looks really good for the value of 575


    d.H. 54 Prozent aller Bilder haben überhaupt keinen schwarzen Rand unten (576 ist die volle Bildschirmhöhe).


    Dieser Rand wird vom Skript als Rand für das Movie definiert, da das Skript ja irgendwie entscheiden muss, welcher Wert für das Movie genommen werden soll. Also nimmt es den Wert, der öfter als 50% vorkommt.


    In Deinem Fall wird also die Aufnahme nach Bildern durchsucht, die einen Rand unten grösser als 0 haben - also alle.


    Deshalb "glaubt" das Script, dass es gar keine Werbung gibt, und bricht ab. Zum Testen benötigst Du eine Aufnahme, die mehr als 50 Prozent Movie hat, am besten mehr als 60 Prozent.


    Versuchs mal mit einer anders geschnittenen Aufnahme.


    Cheers


    doc

    Hi ernie,



    Das Script scheint nicht einen einzigen Abschnitt definiert zu haben, das ist recht schlecht. Ich könnte einfach eine Abfrage einbauen, die das Skript "eleganter" beendet als mit einer Fehlermeldung, aber im Prinzip macht das ja keinen Unterschied. Kannst Du das Ding mal so aufrufen, dass die Ausgaben in eine Datei geschrieben werden, und mir das log mailen?
    Also
    ./ad_scanner.pl > output.log


    und dann mail an vdrsync@gmx.net mit dem output.log als Attachment.


    Hast Du in der Aufnahme unten einen schmalen, weissen Streifen?


    Cheers


    doc

    Hi zusammen,


    wie (unvorsichtigerweise;)) in einem anderen Thread angekündigt, stelle ich jetzt mal meine Veruche zur automatischen Werbe-Erkennung ins Forum. Das ganze ist eine mühsame Geschichte und nicht wirklich nutzbar, aber vielleicht ein erster Schritt...


    Was geht:
    Die unteren schwarzen Ränder werden erkannt und die Aufnahme wird automatisch in Werbung und Film unterteilt, es wird eine marks.vdr erzeugt.


    Was geht nicht:
    das klappt nur manchmal, und auch nicht immer akurat.


    Wie macht das Skript genau:


    In erster Linie ruft das Skript ständig mplayer mit den Optionen:

    Code
    -vo null -ao null -speed 100 -vop cropdetect


    auf, liest den output ein und entscheidet dann, ob es sich um Werbung oder Film handelt. Im Einzelnen:


    • Zuerst wird alle 30 Sec des Films 1 Sec herausgeholt, und an mplayer verfüttert. Die Ergebnisse werden extrahiert (unterer schwarzer Rand) und zwischengespeichert (dauert ca 2 min für knapp 3h Film)


    • Dann wird in allen Ergebnissen nach dem am häufigsten vorkommenden Wert für den unteren schwarzen Rand gesucht. Wenn kein Wert öfter als in 50 Prozent der Fälle vorkommt, dann bricht das Skript ab (ist aber beim testen nicht vorgekommen). Wenn es so einen Wert gibt, dann ist das der Filmrand und das Kriterium für alle folgenden Schritte.


    • Anschliessend entscheidet das Skript für jede einzelne Testsekunde, ob es sich um Film oder Werbung handelt, natürlich anhand der im ersten Schritt ermittelten Werte. Dabei wird nur bestimmt, ob der Wert für den unteren schwarzen Rand mindestens so gross oder grösser ist wie der Wert für den Film. Sonst gibt es Aerger mit dunkelen Szenen.
      Dadurch entstehen schon mal mehr oder weniger lange Anschnitte, die Werbung oder Film zugeordnet sind.


    • Film-Abschnitte, die eine bestimmte Länge unterschreiten (Vorseinstellung 3 min) werden aus der Liste gelöscht und in Werbung umdefiniert.


    • Abschliessend werden die genauen Uebergänge gesucht, hierzu analysiert das Skript ein paar Bilder zwischen den Abschnitten. Beispiel:


      Die ersten 8 Abschnitte einer Aufnahme wurden "Werbung" zugeordnet, dann gibt es 40 Abschnitte "Film" ( 8 - 48 ). Da jeder Abschnitt 30 sec lang ist, startet das Skript mit der Analyse bei 240 sec (also am Ende des Werbe-Abschnitts).
      Dort wird überprüft, ob sich die nächsten 0.5 Sec Werbung oder Film zuordnen lassen. Ist es Werbung, dann wiederholt das Skript die Ueberprüfung bei 240.5 Sekunden, dann bei 241 Sekunden usw. Findet das Slript einen 0.5 Sec Abschnitt, der nach Film aussieht, werden die nächsten 10 sec ebenfalls daraufhin überprüft. Ist auch das Film, wird die Schnittmarke gesetzt und das Skript springt zum nächsten Uebergang, im Beispiel bei 48 * 30 Sekunden, und wiederholt da den Scan, nur das es einen Uebergang von Film zu Werbung sucht.


      Wenn alles durchgescannt ist, wird eine detected_marks.vdr geschrieben.
      Dauert alles zusammen ca 5:40 min, je mehr Schnitte, desto länger.


    Soweit erstmal die Funktionsweise, wie klappt es nun?


    So lala, wenn es gar nicht klappen würde, dann würde ich es nicht posten. Folgende Probleme sind aufgefallen:

    • In der Werbung tauchen öfter schwarze Balken auf, als einem lieb ist. Die machen Aerger.
    • Die Programm-Hinweise bei Pro7 laufen auch oft mit schwarzen Balken, allerdings befindet sich bei denen dann das Logo im oberen schwarzen balken, und nicht im Bild, so wie während des Films. Vielleicht sollte man doch den oberen Balken zusätzlich heranziehen.
    • Weisse Streifen am oberen oder unteren Rand killen das Skript, nix zu machen (oder besser gesagt, den mplayer). Wenn jemand weiss, mit welchen Parametern ich erst das Bild zuschneiden kann, und dann die cropdetection starten kann, dann wäre das schon mal gelöst.
    • Die ganze Logik ist etwas "wackelig" ;)


    Naja, wer spielen will und zuviel Zeit hat, der kann sich ja das Ding mal runterladen, es ausprobieren und/oder verbessern.


    Aufgerufen wirds mit

    Code
    ad_scanner.pl /PFAD/ZUR/AUFNAHME


    Also nicht die .vdr Dateien selbst angeben, sondern das Verzeichnis.


    Einstellungen, an denen man schrauben kann, finden sich an Anfang des Skripts:


    Code
    # PLEASE ADJUST VALUES HERE
    my $interval         = 30;        # Check GOPs (ca 12 Pictures) every nn seconds
    my $gops2check       = 3;         # check nn GOPs
    my $min_movie_length = 180;       # minmal length for a movie bit to be accepted in seconds
    my $min_ad_length    = 30;        # minmal length for am advertisement bit in seconds, NOT USED
    my $final_check_gops = 20;        # number of GOPS to check for the last analysis
    
    
    my $mspeed           = 100;       # this is the speed parameter for mplayer, might be too fast on your machine


    • $interval gibt an, alle wieviel Sekunden eine Test-Schnipsel extrahiert wird
    • $gops2check gibt an, wie lang ein Test-Schnipsel sein soll (in GOPS, ca 0.5 Sek. pro GOP)
    • $min_movie_length gibt an, wie lang ein Stück Film min sein muss, um so akzeptiert zu werden. Es könnte ja auch ein Werbespot mit schwarzen Ränder sein...
    • $min_ad_length genauso, wird aber nicht benutzt
    • $final_check_gops Anzahl der GOPs, die beim letzen Check analysiert werden, also wenn ein potentieller Uebergang gefunden wurde, werden nochmals nn GOPs danach gecheckt.
    • $mspeed ist der -speed Parameter für mplayer, wenn gar nicht geht, sollte man den mal auf 1 setzen


    So, wie gehts jetzt weiter?


    Für mich mit diesem Skript wohl erstmal gar nicht, ich wende mich wieder vdrsync und versprochenen Patches zu. Wenn allerdings jemand von Euch was daran basteln würde, dann würde ich schon noch mitmischen ;).


    Achja, wenn Ihr wissen wollt, ob das Skript wirklich funktioniert hat, dann müsst Ihr natürlich die detected_marks.vdr in das Filmverzeichnis reinkopieren, und zwar als marks.vdr. Und dann per vdr kontrollieren, wo die Dinger sitzen.


    Und wenn Ihr wirklich mit Entwickeln/Testen wollt, dann schaut mal ans Ende vom Skript und nehmt die Kommentar Zeichen vor diesen Zeilen raus:

    Code
    ##################################################
    # TO CHECK WHAT GOING ON UNCOMMENT THE NEXT 3 LINES AND HAVE A LOOK 
    # AT THE FILES THAT THIS SCRIPT GENERATES
    ########################################################
    #	open OF, ">./gop$frameno.vdr";
    #	print OF $video_stream;
    #	close OF;


    Dann gibt es jede Menge Schnipsel auf der Platte, die man dann ansehen kann. Und darüber philosophieren, warum die falsch erkannt wurden.... Und mplayer drüberbügeln. damit man die Parameter verbessern kann.... ;)



    Cheers


    doc

    Hi Boergen


    Zitat

    Wählt das Skript denn die Audiodateien nach Dateinamen aus ? Das wäre dann nämlich ziemlich schick. So könnte man dem Skript dann sagen: Nimm als erstes die 001.ac3 und dann die 001.mpa bzw., wenn vorhanden, die 001_2.mpa.

    Ist das so möglich ?


    Yep, ist möglich. Schaue ich mir heute abend mal an...


    Cheers


    doc

    Hi Boergen


    Zitat


    Dann aber auch sofort 3 Spuren. PW strahlt nämlich 1 x AC3 und 2 x MP2 aus. Nach dem Demuxen hat man dann 3 Audiospuren, die ich mit IfoEdit immer alle mit auf die DVD brenne.


    Warum so beischeiden ;) ?


    Im Ernst, ich kenne kein Tool, welches unter Linux mehr als 2 Audiospuren mit einem Videostream multiplexen kann. Das ist total schade für die PW Empfänger, zu denen ich aber nicht gehöre. Ich habe schon mal darüber nachgedacht, mich an einem multiplex-Tool zu versuchen, aber das steht gaaanz weit hinten auf der Liste. Wenn Du mir allerdings einen Tip geben könntest, welches mir unbekannte Tool unter Linux mehr als 2 Spuren einmuxen kann, dann kann ich das sowohl vdrsync als auch vdr2dvd relativ schnell beibringen;)


    Cheers


    doc

    Hi Nightstorm99


    Zitat

    Kannst du das mal posten was man da ändern muß damit 2 Spuren verarbeitet werden.

    Danke im voraus


    So ganz auf die schnelle geht das nicht. Schau mal hier:

    Code
    # demux and remux to get a/v in sync
        system "$java -jar $dsjar -c $dsjartemplate -o $tempdir $bigvdr";
        #cleanup bigvdr
        unlink ("$bigvdr");
        if ( ! $opt_noac3 && -s "$ac3file" ) {
    	$audfile = $ac3file;
        } else {
            $audfile = $mp2file;
        };
        system "$mplex -f 8 -S0 -o $mpxfile $vidfile $audfile";


    [list=a]
    [*] Es wird mplex aufgerufen, und nicht tcmplex. Keine Ahnung, ob mplex überhaupt 2 Audiospuren verarbeiten kann
    [*] Wenn ich das Skript richtig verstehe, dann wird nur eine AudioDatei im mp2 Format abgelegt, selbst wenn 2 im Ausgangsmaterial vorhanden sein sollten (bin nicht sicher...). Also kann man als QuickHack höchstens 2 Spuren einbauen, wenn eine AC3 ist und die andere MP2.
    [*] Interessant ist auch, dass die Namen für die Audiodateien schon festehen, bevor überhaupt ds.jar aufgerufen wird.
    [/list=a]


    Ich hatte kürzlich Kontakt mit dem Autor, weil er evt. in die nächste Version vdrsync statt ds.jar integrieren will :D.
    Vielleicht baut er dann ja auch die Option ein, 2 Spuren zu integrieren. Oder ich schreibe einen Patch, den ich an den Autor schicke und auch hier poste. Oder ich baue die Funktionalität in vdrsync ein (das ist ohnehin geplant). Oder alles zusammen ;)


    Cheers


    doc