Filme in schön

Diesmal ein Beitrag, der ganz am Thema des Blogs vorbei geht, aber ich finde, dieser Beitrag muss sein. Denn: Die Welt wird schöner, wenn es Tools gibt, die sie schöner macht.

Die Ausgangslage:
Ich besitze einige Filme, die vor allem als .avi vorliegen. Wer sich erinnert, früher wurden alle Filme in DivX konvertiert um sie platzsparend auf der Platte liegen zu haben und die entsprechende DVD nicht immer vor Ort sein musste. Diese Filme möchte ich nun gern von meiner eigenen Platte runter bekommen. Den Speicherplatz kann ich für besseres verwenden. Aber! ich will diese Filme immer sehen können, wenn ich gern möchte (die Einschränkung liegt dabei aber schon darauf, dass ich die Filme zu Hause sehen kann, für mehr reicht meine Internetanbindung nicht aus). Und das ganze soll möglichst automatisch laufen.

Die Technik:
Um das ganze zu bewerkstelligen habe ich folgende Hardware: Ein MacBook Pro (auf dem die Filme sind und von dem sie runter müssen), ein weißes MacBook (das für mich Servertätigkeiten ausführt, also ständig an ist, meist aber die Prozessorkapazitäten nicht ausschöpft), dazwischen ein Kabelnetzwerk (mit wLAN, was aber zwischen den Macs nicht benutzt wird) und ein iPhone.

Der erste Versuch

Mein, schon etwas zurückliegender, Versuch war es eine Möglichkeit zu schaffen, dass ich Filme direkt auf dem iPhone schauen kann, ohne Sync, gestreamt über das wLAN. Zu der Zeit gab es die glorreiche App Air Video noch nicht. Aber es gab einen Weg und zwar: die Filme in iPhone-kompatibles h264 konvertieren, das Video an eine über http erreichbare Stelle im Netzwerk kopieren und fertig. Die Auswahl des Filmes lief dann über den Folder-Index, den der http-Server (im Falle des Macs Apache) zur Verfügung stellt (entsprechendes Rechtegefrickel eingeschlossen, denn ich will ja nicht, dass über die Wolke Zugriffe auf die Filme möglich sind).

Das größte Problem war an dieser Stelle für mich immer die automatische Konvertierung der Filme. ffmpeg lieferte unbrauchbare Ergebnisse. Nach vielem Experimentieren habe ich es hinbekommen über avc ein command-line-tool, welches in vielen Video-Convertern für das iPhone enthalten ist, die Videos richtig zu konvertieren und alles war nett. Das muss aber besser gehen dachte ich mir schon zu diesem Zeitpunkt. Vor allem hatte ich noch immer das Manko, dass die Auflösung der Filme nun auf iPhone-Niveau liegt und zwar kein Retina-Display-Video.

Der zweite Versuch

Nun weiß ich nicht ob ich Handbrake bei MobileMacs oder bei Bitsundso kennen gelernt habe, aber ich kann beide Podcasts empfehlen, weil sie fast alle von mir benutzten Tools schon mal besprochen haben.

Mac -> Mac

Als erstes müssen die Dateien vom MacBook Pro zum MacBook. Das läuft bei mir ganz einfach über DropZone (14 $), welches früher DockDrop hieß. Die Idee war, zieh eine Datei auf das Icon und lade es dann hoch, verschiebe es o.ä.. Mittlerweile kann DropZone aber schon ein paar mehr Funktionen ausführen. Die Aktion wird ausgewählt, indem die entsprechende Datei auf eines von verschiedenen Icons gezogen wird. Diese werden in der Stack-Ansicht im Dock gezeigt, wenn eine Datei über das DropZone Icon gezogen wird.
Für mich macht es aber genau eine Sache und zwar über FTP die Datei vom MBP auf das MB zu schicken. Auf dem MBP wird während des Übertragung ein kleines Overlay angezeigt, was während der Übertragung den Fortschritt anzeigt und verschwindet, sobald die Übertragung fertig ist. Das ist für mich auch der Vorteil gegenüber Tansmit-Droplets (34 $), bei denen dann erst noch Transmit geöffnet wird. Nur ein kleines Overlay, keine Fenster oder so.

FTP -> Weitere Verwendung

Auf dem MB kommen die Dateien alle im Ordner ﻿/Library/FTPServer/FTPRoot/hazelize an. Als erstes müssen die da weg. Und da ich keine Lust habe mir mit den Filmen die interne Festplatte des MB (die an sich ja nicht sehr groß ist) zu befüllen, kommen die ankommenden Filme direkt auf eine angeschlossene externe Festplatte. Und das passiert komplett automatisiert, dank Hazel (21,95$). Hazel lebt eigentlich nur in einer PrefPane, aber es kann verschiedenste Aktionen automatisch ausführen. In diesem Fall alle Dateien mit der Extension avi in den Filme Ordner auf der Externen kopieren.

Wenn die Datei komplett verschoben ist, dann wird der Datei noch das Color Label grau gegeben. Das ist wichtig um deutlich zu machen, dass die Datei komplett verschoben ist. Wenn verschoben wird, dann taucht im Zielordner die zu verschiebenden Datei auf und wird über die Zeit des Verschiebens immer größer, bis sie ihre Originalgröße erreicht. Es könnte an dieser Stelle passieren, dass eine unvollständig verschobene Datei weiterverarbeitet wird. Das Problem kann umgangen werden, indem am Ende der Aktion die Farbe geändert wird und die Regeln zur Weiterverarbeitung nur auf die Datei anschlagen, wenn sie die „richtige“ Farbe haben.

AVI -> MP4

Die (.avi) Filme die ich in die DropZone werfe kommen, also im Ordner Filme an. An dieser stelle kommt wieder Hazel ins Spiel, denn Hazel sorgt dafür, dass die Filme automatisch konvertiert werden.

Auf alle .avi Dateien mit einem grauen ColorLabel wird die nächste Regel angewendet. Und zwar bekommen die Dateien ein rotes ColorLabel – das ist eigentlich eine Sicherheitsmaßnahme, dass ich nicht anfange Dateien zu löschen die gerade in Bearbeitung sind. Als nächstes wird ein Shell script ausgeführt, eine weiter tolle Funktion von Hazel.

﻿/Applications/Handbrake/HandBrakeCLI -i „$1“ -o „${1%avi}“mp4 –preset=“Normal“

– die Anführungszeichen um das $1 sind wichtig, damit auch Dateinamen mit Leerzeichen verarbeitet werden können; „${1%avi}“ sorgt dafür, dass die Outputdatei nicht *.avi.mp4 heißt –

Was passiert genau?? Es wird das command-line-interface von HandBrake aufgerufen und angewiesen die Datei, auf die $1 verweist, zu konvertieren und zwar mit den Einstellungen die in dem Preset „Normal“ abgelegt sind. Also kein blödes Rumprobieren mit einem schlecht dokumentierten CLI, sondern ein Tool welches Open Source ist und vernünftig dokumentiert ist. Hätte ich das nur früher gewusst… Jedenfalls für mich eine echte Freude.

Zum Abschluss wird die (Ausgangs-) Datei noch grün Markiert.

Damit die Dateien aber nicht alle in dem Ordner gesammelt werden, werden sie noch in den Ordner Filme h264 verschoben. Und abschließend gelb markiert.

An dieser Stelle ist die komplette Arbeit von dem MB gemacht worden, ohne einen einzigen Eingriff von mir. Klasse. Nun will ich die Filme aber auch sehen können. Und zwar ohne sie wieder händisch zurück kopieren zu müssen. Und dafür nutze ich eine Funktion die Apple vor einiger Zeit eingeführt hat – HomeSharing.

Mac -> Mac

An sich geht es um Freigaben der iTunes Mediathek. Damit ich, für meine Begriffe bequem, die Filme schauen kann importiere ich sie in meine iTunes Mediathek.

Die Aktivierung der beiden Macs für HomeSharing ist dabei notwendig um im iTunes Store gekaufte Filme schauen zu können. Außerdem muss die Mediathek dann auch nicht für das gesamte Netzwerk sichtbar freigegeben werden (und ja, es könnte noch mit einem Passwort abgesichert werden, es geht mir hier aber um die Sichtbarkeit). Außerdem sind die Filme so direkt importierbar. Sollte ich also einen Film auf mein iPhone syncen wollen, kann ich ihn importieren und dann an meinem MBP syncen. Für den Fall ich möchte den Film unterwegs auf dem iPhone schauen.

Kommt also ein Film an, wird er in mein auf dem MB laufendes iTunes importiert. Der Film verliert seine Farbmarkierung und es werden zwei AppleScripts ausgeführt, die für mich momentan zwei Sachen machen:

1. Benachrichtigen

Über Growl wird mir mitgeteilt, wenn der Film fertig konvertiert und in mein iTunes importiert ist. Über das Netzwerk bekomme ich eine Growl-Benachtrichtigung auf meinem MBP und über Prowl auf dem iPhone.

﻿﻿﻿tell application „Finder“

set movieName to name of item theFile

end tell

tell application „GrowlHelperApp“

set the allNotificationList to {„Konvertierung fertig“}

set the enabledNotificationList to {„Konvertierung fertig“}

register as application „Video Growler“ all notifications allNotificationList default notifications enabledNotificationList icon of application „iTunes“

notify with name „Konvertierung fertig“ title „Konvertierung fertig“ description „Das Video \““ & movieName & „\“ ist fertig.“ application name „Video Growler“

end tell

Der Code dazu kommt aus diesem Posting, denn AppleScript habe ich noch nicht begriffen bis jetzt.

2. Cover suchen

Da ich gern auch die Cover von Filmen im iTunes haben – und ich hoffe Apple wird es noch mal schaffen, dass die Ansichten wie Cover Flow auch für Freigaben verfügbar werden – gibt es das zweite AppleScript was mir den Safari, mit der Bildersuche von Google, mit dem Titel des Filmes öffnet.

﻿tell application „Finder“

set movieName to name of item theFile

end tell

set new_url to „http://www.google.de/images?rls=en&q=“ & movieName

tell application „Safari“

set URL of front document to new_url

end tell

Für den Code habe ich hier übernommen.

Leider ist mir noch nichts eingefallen wie ich die Cover automatisch adden lassen kann, weil ich schon gern eine gute Auflösung dazu hätte, also gern noch mal drauf schaue ob es nicht total verpixelt und/oder hässlich ist. Wer Ideen dazu hat, immer her damit.

Mac -> iPhone

Und jetzt die einfachste Sache, wie kann ich die Filme over the air auf dem iPhone schauen. Das geht indem auf dem MB der Air Video Server läuft. Hier lassen sich neben Ordnern auf der Festplatte auch iTunes Playlisten als Quelle angeben.

Mit der dazugehörigen App lassen sich dann die Filme ganz bequem auf dem iPhone anschauen. Die gibt es in kostenlos und als Kauf für 2,39 €. Filme die noch nicht konvertiert sind könnten auch angeschaut werden. Entweder konvertiert Air Video sie auf der Platte oder auch live, während des Ansehens.

Ende gut alles gut.

Wenn ihr Verbesserungspotential seht, vor allem was die Cover angeht, kommentiert drauf los.