Schlagwort-Archive: kopieren

Videoschnitt für Blinde leicht gemacht

Videoschnitt für Blinde, ein hoffnungsloses Unterfangen?
Wenn man den Begriff als solchen interpretiert ist das wohl die Wahrheit und wird uns wohl nie möglich sein. Allerdings habe ich eine Möglichkeit gefunden, mittels einem Programm Videos zu schneiden. Allerdings natürlich nicht nach dem Bildmaterial, sondern nach dem Audiomaterial des Filmes.
Dieses Programm ist nicht ganz kostenlos, aber es lohnt sich für Leute, die dies häufiger machen. Da ich ganze Serienstaffeln und regelmäßig Filme aus dem Free TV aufzeichne und dann auch ohne Werbung anschauen möchte, schneide ich regelmäßig Videos. Daher hat sich der Kauf für mich gelohnt.
Es handelt sich um das Programm VideoReDo. Ich möchte hier kurz die Basics des Videoschnitts mit dieser Software erläutern, natürlich ausschließlich mithilfe der Nutzung der Tastatur.

1. Öffnen wir das Programm

Der erste positive Eindruck drängt sich beim Öffnen des Programmes auf. Das Programm ist vollständig zugänglich, da es mithilfe eines für Screen Reader zugänglichen GUI-Toolkits entwickelt wurde (sieht stark nach wx aus).
Man bekommt beim ersten Start Tips angezeigt, die ich jedoch ausgeblendet habe, da die wenigsten davon Sinn für mich haben. Dann kann man über das Datei-Menü (oder auch über das Drücken der Enter/Leertaste, da man auf dem entsprechenden Schalter steht) einen Öffnen-Dialog aufrufen und eine Videodatei öffnen, welche auch sofort in das Fenster geladen wird.

2. Navigation, Bewegung und Schnitt

Wie aus einigen Audioschnitt-Programmen bereits üblich startet und pausiert man die Wiedergabe mittels der Leertaste. Spulen kann man in dem Video mit den Pfeiltasten in Kombination mit Strg, Alt oder Umschalt, wobei die Modifikatoren eine unterschiedlich lange Sprungzeit zur Folge haben. Mit Seite hoch/runter springt man 2 Minuten vor/zurück. Pos1 bzw. Ende springen an den Anfang bzw. an das Ende des Videos. Alle diese Werte sind, soweit ich weiß, in den Einstellungen aber auch nachträglich änderbar, wobei ich davon noch keinen Gebrauch gemacht habe.
Hat man nun eine Stelle gefunden, an der man etwas aus dem Video herausschneiden möchte, setzt man mithilfe der F3-Taste eine Startmarke. Nun spult man zum Ende des herauszuschneidenden Bereiches und setzt mithilfe der F4-Taste eine Endmarke. Der Bereich dazwischen ist nun markiert. Löschen kann man ihn nun mithilfe der Löschen-Taste. Mehr als nur Löschen habe ich noch nicht versucht, kopieren und einfügen sollte aber theoretisch auf die selbe Art und Weise klappen, d.h. den Bereich auf die bekannte Art und Weise markieren und mithilfe von Strg+C oder Strg+X kopieren/ausschneiden und an der gewünschten Stelle einsetzen mittels Strg+V.
Hat man nun alles kopiert/geschnitten/gelöscht, kann man das Video speichern. Dazu wählt man im Datei-Menü „Video speichern als…“, wählt ein Dateiformat aus und ein Zielort. Hier kann man gegebenenfalls auch noch spezielle Einstellungen für einige Codecs treffen, also natürlich weiterhin vollständig bedienbar. Möchte man mal keine Videodatei, sondern eine DVD haben, kann VideoReDo das auch, ebenfalls im Datei-Menü gibt es dafür den Punkt „Video als DVD speichern“, wo man sogar verschiedene Menü-Stile wählen kann, wobei das natürlich nicht wirklich sinnvoll ist, da wir den unterschiedlichen Designs nicht viel abgewinnen können.

3. No Transcoding for VideoReDo

Eine der besonderen Funktionen von VideoReDo ist die, für die es eigentlich auch entwickelt wurde, nämlich für den Schnitt von Fernsehaufnahmen, ohne nachträglich eine Transkodierung vornehmen zu müssen, so wie diverse Videoschneider wie Adobe Premiere, Nero, Magix und wie sie nicht alle heißen es tun.
Bei einer Transkodierung wird das vorhandene Videomaterial dekodiert und anschließend in dem Zielformat neu enkodiert. Da besonders die Enkodierung viel Zeit beanspruchen kann, sind Rendering-Prozesse wie mit Adobe Premiere für ihre exorbitante Laufzeit bekannt. Die Laufzeit der Enkodierung hängt dabei auch meist direkt von der Qualität des gewünschten Endproduktes ab, wodurch der Prozess immer länger dauert, je besser das Endprodukt aussehen soll.
VideoReDo erkennt jedoch, wenn man ein Eingabeformat, beispielsweise ein MPEG2-Videostream, verwendet und eine Ausgabe mit dem selben Codec durchführen möchte. In diesem Fall wird keine Dekodierung, gefolgt von einer Enkodierung vorgenommen, sondern stattdessen direkt geschnitten. Dabei werden die gewünschten Teile verschoben/kopiert/gelöscht und der Strom so, wie er war, weiterverwendet (gelegentlich werden Fehler behoben). Da hier der aufwändige Prozess der Enkodierung ausgespart wird, dauert dieser Prozess nur einen Bruchteil der Verarbeitungszeit von Premiere und Konsorten. Die hierfür notwendige Zeit hängt nur minimal von der Rechenpower eures Prozessors bzw. der Grafikeinheit ab, sondern deutlich mehr von der Lese/Schreibgeschwindigkeit eurer verwendeten Hardware, von der das Quellvideo kommt und wohin das neue Video geschrieben werden soll. Optimaler Weise sind dies unterschiedliche Geräte, damit das einzelne Gerät nicht mehr als doppelt belastet werden muss, wodurch natürlich auch ein Verlust von Lesee/Schreibgeschwindigkeit eintritt.
Ein Beispiel:
Das Speichern eines 90 Minuten Filmes dauert mit VideoReDo knapp 40 Sekunden, wobei ich zwei Festplatten, über SATA III angebunden, verwende. Von einer HDD wird gelesen, auf eine SSD wird geschrieben. Selber Prozess dauert mit Adobe Premiere knapp 15 Minuten. Verwendet wurde besagter MPEG2-Codec. Die Verarbeitung von H.264 dauert rechnerisch bedingt in Adobe Premiere länger, da der Encoder deutlich mehr Rechnungen beansprucht. In VideoReDo dagegen ist hier kaum ein Unterschied zu bemerken.

4. Fazit

VideoReDo will ich heute nicht mehr missen, es ist mein haupt-Schnittprogramm. Seit Version 5 besitzt es auch eine automatische Werbeerkennung, allerdings ist diese derzeit noch nicht sonderlich erfolgreich. Da ist die Erkennung von TSDoctor deutlich besser, zu dem ich gegebenenfalls auch noch einen Artikel verfassen werde, da es sich hierbei ebenfalls um ein wichtiges Tool in meiner Videoschnitt-Toolchain handelt.
VideoReDo ist auch das einzige, mir bekannte Werkzeug, um als Blinder Videos schneiden zu können. Dies ist zwar nur nach Audioframes möglich, da wir das Video nicht sehen, allerdings haben sich Sehende, die meine filme schauen, sehr gefreut, das man beispielsweise, wenn man nicht genau aufpasst, gar nicht mitbekommt, wann eigentlich eine Werbung vorhanden war und wann nicht. Die Schnitte sind also wohl kaum bemerkbar, was auf die Qualität des Tools schließen lässt.
An alle Blinde, die sich bisher gegen solche Tätigkeiten begründet gewehrt haben, können ihren Sehenden Freunden damit nun auch einen gefallen tun. Greift zu. Der Support der Firma lohnt sich, ich bin Fan von VideoReDo :).

Squasher – Bash shell script zur Erstellung von Festplatten-Abbildern unter Linux

In den letzten Tagen habe ich meine Bash Shell Scripting Kenntnisse erweitert, sodass ich mir endlich eine schöne Applikation aufsetzen konnte, die das Erstellen von Festplattenabbildern via Linux-Kommandozeile möglichst erleichtert. Dazu genutzt wird dd, welches ja der Alleskönner unter Linux zum Thema Datei/Gerätesicherung, insbesondere von ganzen Festplatten, ist. Da die entstehende Datei dann allerdings genau so groß ist wie die Festplatte und das unter Umständen viel zu groß ist, habe ich noch das Squash-Komprimierungssystem benutzt, welches die Daten nicht nur komprimiert, sondern auch noch on-the-fly mountbar ist, sodass man jeder Zeit auf seine Daten zugreifen kann. Eine genaue Anleitung zur Datensicherung/Auslesung inkl. meines Squasher-Scriptes folgt nun:

1. Wiping empty space

Ein wenig zur Praxis: Werden Dateien/Daten auf einer Festplatte gelöscht, werden sie nicht gleich richtig „gelöscht“, sondern nur deren Dateiindex in der logischen Sektion der Festplatte, in der die Positionen aller Dateien auf der Festplatte stehen. Das ganze läuft unter dem Motto: ich kenne deinen Namen nicht, also kenne ich dich nicht mehr. Aus den Augen, aus dem Sinn. Die Datei existiert praktisch weiter. Zumindest solange, bis die Platte neue Daten darüber schreibt. Da diese Dateien aber bei einer kompletten Plattensicherung mit gesichert werden, aber ja eigentlich nicht mehr gebraucht werden, können wir sie praktisch überschreiben. Optimalerweise mit Daten, die sich viel besser komprimieren lassen, also 0-en. Dann wird das Festplattenabbild um so kleiner. Man nehme also das Zielgerät, welches man sichern möchte, und binde es ein:

sudo mount device zielpfad

Zum Beispiel:

sudo mount /dev/sda1 /mnt

Sollte das ganze ohne Fehler ablaufen, findet ihr den gesamten Platteninhalt nun im Zielpfad, oder in meinem Beispiel unter /mnt.
Dorthin verfrachten wir nun eine Datei, welche ausschließlich 0-en enthält und den gesamten freien Speicher der Platte belegen wird, sodass wirklich alle gelöschten Daten vernichtet sind. Dazu nutzen wir, oh Wunder, dd:

dd if=/dev/zero of=/mnt/tmp.zero bs=4M

Das ganze zeigt praktisch keine Ausgabe und blockiert die Konsole solange, bis die Platte restlos voll ist. Dann gilt es nur noch, die tmp.zero-Datei zu löschen (siehe Plattenstrategie oben):

rm /mnt/tmp.zero

Jetzt noch die Platte aushängen:

sudo umount /mnt

Noch ein wenig zur Erklärung der obigen Vorgänge: /dev/zero ist ein von Linux bereitgestelltes Gerät, welches ausschließlich 0-en ausgibt, egal, wie lange man daran nuckelt. Daher ist es sehr praktisch zur Befüllung von Speicher mit 0-en. Zur Anwendung von dd betrachte man sich bitte das dd-manual, welches beispielsweise direkt vom Ubuntu-Wiki und vielen Anderen zur Verfügung gestellt wird.

2. Saving harddrive

Jetzt greift mein squasher ein: sämtliche Kompression und Sicherung an einen frei wählbaren Ordner übernimmt der squasher. Und das sogar mit einer hübschen Fortschrittsanzeige. Klingt praktisch, oder?
Ladet euch ersteinmal mein Wunderwerk herunter: Squasher
Das ganze jetzt in einen Ordner eurer Wahl gelegt und ausführbar gemacht, beispielsweise mit:

chmod 755 squasher.sh

Um das Script zu nutzen, muss allerdings noch etwas nachinstalliert werden, nämlich die für das eigentliche squashing und das Auslesen des Squash-Systems nötigen Tools:

sudo apt-get update
sudo apt-get install squashfs-tools

Und außerdem, falls nicht sowieso längst vorhanden, die Bash shell:

sudo apt-get install bash

Jetzt sollte alles funktionieren :).
Das Script nimmt als ersten Parameter das Gerät, von welchem ein Backup erstellt werden soll. Der zweite Parameter, welcher optional ist, nimmt die Zieldatei an. Wird keine Zieldatei angegeben, wird die Ausgabe in squasher.squash gespeichert. Wir führen das Script also folgendermaßen aus:

sudo ./squasher.sh /dev/sda2 festplatte.squash

Wichtig dabei ist, dass das Script mit root-Rechten ausgeführt wird, denn sonst wird dd nicht korrekt arbeiten. Aber keine Angst, dass Script warnt euch, falls es nicht als root ausgeführt wird. Es erwartet euch nach kurzem eine wunderhübsche Fortschrittsanzeige, die wie folgt aussieht:

dd: xxx MB, ab,cd MB/s; squashed: ef,ghI

Beispiel:

dd: 250 MB, 65,0 MB/s; squashed: 235M

Die Erklärung dazu: Die dd-Ausgabe im ersten Teil des Fortschrittsbalkens gibt an, wie viel Daten dd schon kopiert hat und wie schnell dd gerade arbeitet. Die squashed-Angabe gibt dazu an, wie groß das squash-Archiv gerade ist. Optimalerweise sind die dd-Werte mit denen der Squash-Ausgabe nicht kompatibel, squash müsste eigentlich immer kleiner sein.
Hinweis: Man kann nicht nur einzelne Partitionen sichern, sondern problemlos auch ganze Festplatten auf einen Rutsch. Dazu einfach die gesamte Platte zum Sichern angeben, also:

sudo ./squasher.sh /dev/sda

Einzig und allein das Auslesen macht hinterher den Unterschied.

3. Reading through treasures

Und beim Auslesen sind wir auch schon angekommen. Wir haben nun ein optimalerweise schön kleines squash-Archiv (im Vergleich zur Originalplatte!) und wollen Daten auslesen, ohne das Archiv erst wieder auf eine physikalische Platte zu schreiben? In voller Größe? Keine Sache:

sudo mount festplatte.squash /mnt

Über die „read-only“-Ausgabe beschweren wir uns nicht weiter. Ja, das System kann im Nachhinein nicht mehr verändert werden, aber das wollen wir ja auch nicht, wir wollen nur Lesen, also was solls. im Ordner /mnt finden wir jetzt das dd-Image, welches von unserem zu sichernden Ziellaufwerk/unserer zu sichernden Partition erstellt wurde.

3.1 Reading partitions

Fangen wir mit dem einfachen an: Das Auslesen von Partitionen. Das ist nämlich ein Witz:

sudo mount /mnt/festplatte.squash.img /mnt2

Fast trivial, findet ihr nicht?
Unter /mnt2 findet ihr jetzt alle gesicherten Daten. Na dann viel Spaß damit :).

3.2 Reading through (hard)drives

Das Auslesen von ganzen partitionierten und gesicherten Platten dagegen erfordert die Installation eines extra Werkzeugs:

sudo apt-get install kpartx

Dieses Werkzeug erlaubt es uns, ein dd-Image mit mehreren Partitionen in seine Ursprungspartitionen zu zerlegen und diese einzubinden. Dazu führen wir aus:

sudo kpartx -a /mnt/festplatte.squash.img

Dieses Kommando bietet uns nun im Ordner /dev/mapper eine Liste von loopback-Geräten an, also unserer Festplatte, beispielsweise loop0 mit einer Partition dahinter, beispielsweise p1. Um nun eine in festplatte.squash.img enthaltene Partition einzubinden, genügt Folgendes:

sudo mount /dev/mapper/loop0p1 /mnt2

Und ihr findet alles, was ihr braucht, in /mnt2

4. Finished!

So, dass wars. Ich hoffe das Tool hilft euch etwas. Nur zur Demonstration, was man beim Sichern einer Platte eigentlich eingeben müsste:

mksquashfs empty_dir festplatte.squash -p 'festplatte.squash.img f 444 root root dd if=/dev/sda1 bs=4M'

Dieses Kommando würde aber auch keine ordentliche Ausgabe liefern, sondern nur eine mksquashfs Ausgabe, die angibt, wieviel bereits gesquashed wurde und welche Kompressionsstärke gerade anliegt. Die dd-Ausgabe sieht man gar nicht. Dazu müsste man ein weiteres Terminal-Fenster öffnen und dort folgendes eingeben:

sudo kill -USR1 $(pidof dd)

Dann wieder zurück in das squash-Fenster, wo auf magische Weise, mitten in der squash-Ausgabe, ein dd-Statusbericht erschienen ist. Nicht gerade schön, oder?
Davon mal abgesehen bietet mein Script auch jederzeit die Möglichkeit zum Abbruch mittels ctrl+c. Dieser Vorgang löscht dann sämtliche Spuren des nicht abgeschlossenen squash-Vorgangs und kehrt wieder in die Konsole zurück, als wäre nichts gewesen. Ein Luxus, wie ich finde…
So, und jetzt viel Spaß beim squashen. Und habt ihr Ideen, Korrekturen oder Wünsche, nutzt die allgegenwärtige Kommentar-Funktion.