Open Source im professionellen Einsatz
Linux-Magazin 01/2010
© dieterwald, Pixelio.de

© dieterwald, Pixelio.de

Perl-Skript am Schneidetisch

Final Cut

Ein handgedrehtes Video sieht mit einem Vorspann gleich professioneller aus. Die Tools Mencoder und Sox helfen bei der Formatfitzelei und ein Perl-Skript automatisiert den Vorgang.

622

Es ist schon faszinierend, zu wie vielen Themen Youtube Lehrfilme anbietet. Ob ein Hobbykoch sein Leibgericht kochen oder der praktisch veranlagte Autofahrer sein Gefährt reparieren will, auf Youtube findet sich oft Passendes. Ist so ein Lehrvideo erst einmal zusammengeschnipselt, fehlt noch ein Titel. In zwei Sekunden Vorspann kann der Hobbyfilmer mit ein, zwei Zeilen Text darauf hinweisen, was den Zuschauer gleich erwartet.

Das erledigen proprietäre Windows-Programme wie Adobe Premiere, Mac-Software wie I-Movie oder gar Linux-Applikationen wie Cinelerra, doch in der Perl-Kolumne geht es natürlich kurz und schmerzlos von der Kommandozeile aus mit einem kleinen Perl-Skript.

Laufende Bilder

Filme bestehen aus schnell hintereinander abgespielten Einzelbildern, den so genannten Frames. Normale Videokameras nehmen pro Sekunde etwa 30 davon auf, ein Programm wie Mplayer spielt die Einzelbilder wieder in festen Zeitabständen ab. Ein bewegungsloser Videotitel mit ein bisschen Text lässt sich leicht als eine Reihe identischer Jpeg-Bilder erzeugen und mit Mencoder [1] in eine AVI-Datei umwandeln. Wer die beiden Videodateien dann hintereinanderhängt, erhält ein Video mit Titel - wenigstens in der Theorie. In der Praxis stehen doch noch ein paar Hürden im Weg.

Videodateien im AVI-Format dienen als Container für Video- und Audioströme, die ein Player gleichzeitig abspielt. Sowohl Video- als auch Audiodaten in einem AVI-Container können in verschiedenen Formaten gespeichert sein. Die Audiospur liegt meist im rohen PCM-Format oder komprimiert als MP3-Datei vor.

Videodaten hingegen verbrauchen massenhaft Speicher, weil pro Sekunde 30 Bilddateien anfallen. Daher spielt das verwendete Kodierungsverfahren, der so genannte Codec, eine entscheidende Rolle, denn ein guter Codec kann die Daten extrem komprimieren, ohne die Bildqualität allzu sehr in Mitleidenschaft zu ziehen. Codecs gibt es wie Sand am Meer, viele davon sind patentiert.

Obwohl ein AVI-Container verschieden kodierte Video- und Audiodaten aufnehmen kann, darf das Kodierungsverfahren nicht mittendrin wechseln. Um also ein Vorspannschnipsel und ein Video hintereinanderzuhängen, muss der Cutter dafür sorgen, dass beide von Anfang an die gleichen Codecs verwenden, oder aber die unterschiedlich kodierten Daten am Ende in ein gemeinsames Ausgabeformat transformieren.

Kameras im Vergleich

Abbildung 1 zeigt die mit dem Programm in Listing 1 ausgelesenen Metadaten zweier Videos. Es nutzt das Modul Video::FrameGrab vom CPAN, dessen »meta()«-Methode Kenndaten eines Videos einholt und in einem Hash ablegt. Abbildung 1 vergleicht die Metadaten der beiden Videos »coolpix.avi« und »camcorder.avi«. Ersteres ist mit einer kleinen Westentaschenkamera, einer Nikon Coolpix S52, aufgenommen, das zweite mit einem digitalen Camcorder der Marke Canon Elura 100. Beide zeichnen das Video mit etwa 30 Frames pro Sekunde auf (»video_fps«), aber der Canon-Recorder nutzt den Codec »ffdv« und die Nikon »ffmjpeg«.

Listing 1:
»video-meta«

01 #!/usr/local/bin/perl -w
02 use strict;
03 use Data::Dump qw(dump);
04 use Video::FrameGrab;
05
06 my($file) = @ARGV;
07 die "usage: $0 file" unless defined $file;
08
09 my $grabber = Video::FrameGrab->new(
10   video => $file);
11
12 my $meta = $grabber->meta_data();
13 print dump($meta), "n";

Abbildung 1: Metadaten zweier Videos, oben mit Nikon Coolpix S52, unten mit Canon Elura 100.

Auch die Audiodaten speichern beide Kameras unterschiedlich. Während der Camcorder zwei Kanäle aufnimmt, kann die Nikon nur Mono. Zudem ist die Audioqualität unterschiedlich, denn der Camcorder nimmt Audio mit 32000 Messpunkten pro Sekunde auf (Feld »audio_rate«), die Nikon gibt sich mit nur 8000 Messpunkten zufrieden.

Abbildung 1 zeigt auch, dass die »audio_rate« von »8000« bei der Nikon einem Wert von »64000« für die »audio_bitrate« in Bit pro Sekunde gegenübersteht. Beim Camcorder hingegen entstehen pro Audio-Messpunkt 32 Bit (1024000 geteilt durch 32000). Pro Kanal sind das 2 Byte Sample Size.

Ein stummes Titelschnipsel könnte also bei unbekannter Kamera nicht ohne Umwandlung vor einem Video stehen. Zum Glück bieten die Tools Mencoder und Sox [2] die nötigen Funktionen, um die Formate so hinzubiegen, dass Titel und Video trotzdem vereint im AVI-Container liegen können.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Ich glotz' TV

    Nina Hagens Medien-Nutzungsverhalten zu kopieren ist für einen Auslandsdeutschen gar nicht einfach. Doch ein Internet-Fernsehportal, die abgekupferte Technik eines Geräts und Perl verhelfen Exilanten sogar zu zeitversetztem Pantoffelkino. Hier Gebliebene haben natürlich genauso viel Spaß.

  • Perl-Snapshot: Videos per Skript

    Hobbyfilmern und Youtube-Fans helfen die Tools Mencoder und Sox bei der Formatfitzelei. Im Perl-Workshop des Linux-Magazins 01/2010 automatisiert ein Perl-Skript den Vorgang und baut gleich noch einen kleinen Vor- und Abspann.

  • Perl-Snapshot

    Damit Hobby-Youtuber Michael Schilli erfährt, wenn seine Guckerzahlen durch die Decke gehen, analysiert ein Perl-Skript täglich Trends und schlägt Alarm, falls ein Video plötzlich zum Hit wird.

  • Ozapft is

    Neben Google, Amazon und Ebay bietet neuerdings auch Yahoo eine Programmierschnittstelle zu einigen seiner Dienste an. Drei einfache Perl-Skripte stöbern heute damit Tippfehler, Internetbildchen und verschollen geglaubte Klassenkameraden auf.

  • Episodenfilm

    Ein Perl-Skript mit GTK-2-Oberfläche merkt sich, wie weit sein Anwender gespeicherte Videos angesehen hat, und fährt auf Wunsch an der Stelle der letzten Unterbrechung wieder fort.

comments powered by Disqus

Ausgabe 09/2016

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.