Monthly Archives: Februar 2014

Datum in Unixzeit konvertieren

Auf vielen Systemen spielt die sogenannte Unixzeit eine tragende Rolle, denn diese wird zur Verarbeitung von Zeitwerten innerhalb von Zeitstempeln des Dateisystems, Datenbanken und Server-Anwendungen wie z.B. PHP und MySQL verwendet.

Die „Unixzeit“ wurde 1969 als einfache Zeitdefinition für das Betriebssystem Unix entwickelt und als POSIX-Standard festgelegt. Seit Unix Version 6 bezeichnet die Unixzeit die Anzahl der vergangenen Sekunden seit dem 1. Januar 1970 00:00 Uhr UTC (Schaltsekunden werden nicht mitgezählt).

Diese Zeitdefinition bietet den Vorteil, das sie von Computersystemen als vorzeichenbehaftete Ganzzahl (Integer) einfach verarbeitet werden kann. Zeiträume lassen sich durch simple Addition oder Subtraktion leicht berechnen.

Mehr zum Thema: Wikipedia-Unixzeit

Unter den meisten Unix-basierten Systemen (wie auch Linux) lässt sich die Unixzeit mittels des Befehls date ausgeben und auch in das lokale Datumsformat konvertieren.

Aktuelle Unixzeit ausgeben

date +%s

Bestimmtes Datum/Uhrzeit in Unixzeit konvertieren

date -d "2014-02-24 13:00" +%s

Unixzeit in Datum/Uhrzeit konvertieren

date -u -d @UNIXZEIT

Beispiel:
date -u -d @1234567890
Fr 13. Feb 23:31:30 UTC 2009

dpkg: Pakete von der Aktualisierung ausschließen

Paketaktualisierungen in Debian-basierten Systemen wie z.B. Ubuntu sind im Regelfall problemlos und schnell erledigt. Meistens jedenfalls. Nicht jedoch, wenn bestimmte Paketupdates zu Problemen führen – dann wünscht man sich die Möglichkeit, bestimmte Pakete (erst mal) von der Aktualisierung auszuschließen.

Upgrade unerwünscht

Über die Kommandozeile lässt sich das Vorhaben problemlos in die Tat umsetzen:

Paket-Aktualisierung sperren

echo <Paket> hold | dpkg --set-selections

Sperre aufheben und Updates wieder freigeben

echo <Paket> install | dpkg --set-selections

Liste mit gesperrten Paketen anzeigen

dpkg --get-selections | grep hold

Hintergründe: Upgrades und ihre Tücken

Vor einiger Zeit wurde mir aus den offiziellen Quellen ein Upgrade des NVIDIA-Grafiktreibers vorgeschlagen; dieser brachte die neue Version 319.32 mit sich. Das Upgrade lief sauber durch, ein anschließender Neustart ergab plötzlich ein ein nicht mehr startendes System.

Fehlersuche

Im Failsave-Mode ergab ein Blick in /var/log/syslog folgendes:

NVRM: API mismatch: the client has the version 319.32, but
NVRM: this kernel module has the version 304.88. Please
NVRM: make sure that this kernel module and all NVIDIA driver
NVRM: components have the same version.

Eine weitere Analyse mittels

dkms status

ergab schließlich:

nvidia-304-updates, 304.88, 3.5.0-39-generic, x86_64: installed
nvidia-319-updates, 319.32, 3.5.0-39-generic, x86_64: installed

Was war passiert? Das alte Kernel-Modul Version 304 wurde beim Upgrade nicht entfernt und führte zu einem Versionskonflikt, wie man am Auszug aus /var/log/syslog ersehen kann. Bis ich allerdings auf diese Ursache kam, war bereits einige Zeit an Fehlersuche vergangen – an doppelte Module hatte ich zunächst nicht im Traum gedacht und zunächst nur im Xorg.log nachgeschaut, welches mir aber keinen Aufschluss auf die Ursache geben konnte.

Fehlerbehebung

Manuelle Deinstallation aller Komponenten des alten Treibers 304 mittels:

apt-get remove nvidia-304*

und ein anschließendes

update-grub

Nach einem Reboot lief anschließend alles wieder einwandfrei.

Weitere Probleme…

Eine ganze Weile später meldete sich die Paketaktualisierung mit einem weiteren Upgrade des NVIDIA-Grafiktreibers. Diesmal lief alles reibungslos, allerdings zeigten sich im laufenden Betrieb Probleme mit der Erkennung des zweiten Monitors resultierend aus (urplötzlich) fehlerhaften DDC/EDID-Werten. Sich häufende Bugreports zu dieser Treiberversion führten dann zu der Entscheidung, auf die vorherige Treiberversion zu wechseln und erst mal bei dieser zu bleiben.

Audioformat in Videodatei ändern

Basierend auf meinem letzten Blogeintrag DVD-Sammlung archivieren mit Handbrake noch eine kleine praktische Ergänzung.

Bei der Archivierung meiner DVDs in MP4-Container habe ich die originale Audiospur im Format „AC3 5.1“ beibehalten. Sollte man mit diesem Audioformat auf bestimmten Abspielgeräten (wie z.B. dem iPad) Probleme bekommen, ist keine erneute Konvertierung des gesamten Videos erforderlich. Ich habe dies so gelöst, das ich eine weitere Kopie der betreffenden Videos in einem separaten Ordner erzeugt und die Audiospur in das Format „AAC“ konvertiert habe.

Unter Linux mit installierten ffmpeg bzw. Libav sowie Codecs (siehe Artikel bei Ubuntuusers Libav, avconv und Codecs) ist diese Aufgabenstellung überhaupt kein Problem. Ein simpler Einzeiler konvertiert die Audiospuren aller Videodateien im aktuellen Verzeichnis und legt die neuen Videodateien in einem separaten (existierenden) Verzeichnis ab:

for f in *.*;do avconv -i "$f" -f mp4 -vcodec copy -acodec libvo_aacenc -ab 160k -ar 48000 -ac 2 /home/arndt/Video/AAC-Format/"${f%.*}".mp4;done

DVD-Sammlung archivieren mit Handbrake

Nach langer Zeit mal wieder ein neuer Beitrag, diesmal zum Thema Aufräumen.

Die Problemstellung

Über die Jahre hat man sich DVDs gekauft, welche nun als Sammlung im Regal einiges an Platz wegnehmen. Viele DVDs haben nun einige Jahre auf dem Buckel, ewig haltbar sind diese aber auch nicht. Will man den offiziellen Angaben trauen, hält eine gepresste DVD geschätzt 100 Jahre, doch die Praxis lehrte mich eher anderes. Trotz guter Behandlung bedeuten Staub, Fingerabdrücke und minimale Kratzer oftmals viel früher, das Lesefehler auftreten, je nach verwendeter Optik und Qualität des Abspielgerätes. Sehr schade, wenn liebgewonnene Klassiker irgendwann nicht mehr abspielbar sind.

Dazu kommt derzeit der Umstand, das ich DVD-Player allmählich nicht mehr als zeitgemäß empfinde. In der heutigen Zeit, dominiert durch Smart-TVs, Multimedia-Playern, NAS-Systemen, Tablets und Co. im Heimnetzwerk bietet der Standard-DVD-Player nur wenige und nicht sehr komfortable Möglichkeiten.

Gerade deshalb nutzen wir bereits seit vielen Jahren einen Mediaplayer im Wohnzimmer, genauer einen Fantec R2650. Unsere Lieblings-DVDs habe ich auf dessen integrierter Festplatte als 1:1-Kopie abgelegt, so lässt sich bequem in der Sammlung recherchieren und Filme schauen. Die Originale werden geschont und verbleiben in ihrer Hülle.

Doch auch hier ergaben sich mit der Zeit weitere Probleme. Die DVD-Struktur kann nicht von allen Mulimedia-Geräten abgespielt werden, somit war der Filmgenuß weiter auf den Mediaplayer und das Wohnzimmer beschränkt. Toll wäre es doch, seine DVD-Sammlung zuhause über das Heimnetz Standort- und Geräteunabhängig anschauen zu können. Dazu sollte das Regal freigeräumt und die Sammlung nach der Archivierung in den Keller verschwinden. Also suchte ich nach einer Lösung für die Langzeitarchivierung unserer DVDs.

Beim Experimentieren mit dem FRITZ!Box-Medienserver/NAS zusammen mit Raspbmc auf der Raspberry Pi stellte sich das DVD-Format als ungünstig heraus. Allein die Datenmenge ist immens, sie beläuft sich zwischen 4-8 GB pro DVD – recht viel, um diese als Stream über WLAN im Heimnetz bereitzustellen. Also musste ein alternatives Format her, welches sich für die Archivierung ohne signifikanten Qualitätsverlust eignet.

Wahl des Videoformats

Hier stieß ich auf das verbreitete Containerformat mp4 in Verbindung mit dem Video-Codec x264. Dieses bietet eine gute Qualität bei geringer Datengröße und kann von den meisten Playern problemlos abgespielt werden. Die Audiospur der DVD (AC3 5.1) sollte möglichst in Originalform beibehalten werden.

Konvertierung mit Handbrake

Zum einfachen Transcodieren der DVD fand ich das Programm Handbrake. Dieses steht für eine Vielzahl an Plattformen zur Verfügung (Mac OS, Windows, Linux), ist leicht zu bedienen und bietet die wichtigsten Einstellungsmöglichkeiten, ohne den Nutzer mit detaillierten Encodierparametern zu „erschlagen“:

2014-02-23 15:25:39

Um ein sehr gutes Ergebnis zu erzielen, empfehle ich folgende Einstellungen:

Über den Menüpunkt „Source“ wählt man zunächst das Laufwerk/Verzeichnis der DVD aus. Unter „Title“ wird automatisch die längste Videospur vorausgewählt, man kann aber auch eine eigene Auswahl vornehmen und sogar auf einzelne Kapitel beschränken.

Bei „Destination“ wählt man ein Ausgabeverzeichnis. Als Ausgabeformat habe ich MP4 gewählt.

Dann ist das Profil „High Profile“ auswählen, welches als Ausgangsbasis verwendet und minimal angepasst wird. Anschließend kann dieses unter einem eigenen Namen abgelegt werden, um später wieder darauf zurückgreifen zu können.

Video-Einstellungen

Im Register „Video“ wurde automatisch als Video Encoder „H.264 (x264)“ eingestellt. Hier habe ich den „RF“-Wert auf 19 eingestellt, um noch ein bisschen mehr Qualität zu erhalten. Niedrigere Werte erhöhen die Dateigröße immens, ohne das eine nennenswerte Steigerung der Qualität zu ersehen wäre.

2014-02-23 15:26:00

Audio-Einstellungen

Im Register „Audio“ lassen sich die Audiospuren festlegen. Hier habe ich nur die deutsche Spur gewählt und belasse diese mittels „AC3 Passthru“ im Originalformat, zu ersehen am Codec „AC3 Passthru“ und der Sample Rate „Same as Source“.

2014-02-23 15:26:15

Untertitel

Das Register „Subtitles“ regelt das Verfahren bei Untertiteln. Diese ist etwas knifflig, da es durchaus Passagen mit Untertiteln in Filmen geben kann, empfehle ich die Einstellung „Foreign Audio Search“. Handbrake durchsucht den Film vor der Transkodierung auf Szenen mit erzwungenn Untertiteln. Damit diese später auch angezeigt werden, empfehle ich die Auswahl von „Forced Only“ und „Burned In“.

2014-02-23 15:26:29

Cropping

Abschließend empfehle ich noch einen Blick in die „Picture Settings„. Hier werden die Einstellungen zum Beschnitt (Cropping) des Bildes festgelegt. Nach meiner Erfahrung ist es absolut ausreichend, die Einstellung auf „Auto Crop“ zu belassen, Handbrake erzielt damit sehr gute Ergebnisse. Wichtig ist die Anamorphic-Einstellung auf „Loose“ und des Alignments auf „2“.

2014-02-23 16:27:14

Anamorphic? Loose/Strict?

Hintergrund: Bei einer DVD wird das Bild in 720×576 Pixeln gespeichert (PAL-Standard). Ein Film im Widescreen-Format (16:9; 2,35:1) wird deshalb auf einer DVD verzerrt gespeichert. Wird die Anamorphic-Option in Handbrake aktiviert, übernimmt Handbrake die Auflösung der DVD (720×576). Um das finale Video auf einem 16:9-Fernseher unverzerrt darzustellen, legt Handbrake innerhalb des Videos Informationen für das Abspielgerät ab, wie das Bild zu skalieren ist. Dies bietet den Vorteil einer kleineren Datenmenge ohne Qualitätsverlust.

Die „Loose“-Option verändert die Dimensionen von Höhe und Breite so, das sie stets durch 16 dividiert werden können und das Seitenverhältnis beibehalten wird. Diese Einstellung ermöglicht es dem Encoder effizient zu arbeiten, ohne die Kompression des Bildes zu verschlechtern.

Ich habe mit diesen Werten sehr gute Erfahrungen gemacht, wer sich für weitere Details hierzu interessiert, dem emfehle ich folgende Seite: AnamorphicGuide

Ergebnis

Ein Klick auf „Start“ startet nun die Transcodierung. Auf meinem AMD Phenom II X4 955 Processor dauerte die Codierung von z.B. der DVD „Star Trek – Der Film (1979)“ (Länge ca. 2:10 h) etwa 40 Minuten und resultierte in einer Dateigröße von nur noch 1,4 GB.

Fazit: Handbrake ist ein tolles Programm, welches eine komfortable DVD-Konvertierung ermöglicht. Unsere gekauften DVDs sind nun archiviert und von vielen Mediengeräten im Heimnetz abspielbar. Mehr zu Handbrake auch im Ubuntuusers-Wiki.