Code Snippets: Unterschied zwischen den Versionen
Aus exmediawiki
C.heck (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „=numerate files in folder== Dieses Skript erzeugt eine durchlaufende Numerierung aller in einem Verzeichnis befindlichen JPEG Dateien. Die Originaldateien wer…“) |
C.heck (Diskussion | Beiträge) |
||
Zeile 103: | Zeile 103: | ||
''siehe auch: http://wiki.ubuntuusers.de/Screencasts?highlight=Pw%20Tbaustell%20Zscreen'' | ''siehe auch: http://wiki.ubuntuusers.de/Screencasts?highlight=Pw%20Tbaustell%20Zscreen'' | ||
+ | |||
+ | |||
+ | =Youtube-Video animieren Tutorial= | ||
+ | |||
+ | [[Datei:facepalm.gif]] | ||
+ | |||
+ | In diesem Tutorial wird beschrieben, wie man nur mit den Mitteln der Kommandozeile aus einem Youtube Video ein animiertes GIF erzeugt. Zunächst laden wir ein Video mit '''youtube-dl''' herunter, zerlegen es mit '''FFmpeg''' in einzelne Bilder und passen deren Größe mit '''convert''' (ImageMagick) an. Abschliessend erzeugen wir ebenfalls mit dem Befehl '''convert''' das animierte GIF. | ||
+ | |||
+ | ==Voraussetzungen== | ||
+ | |||
+ | Dieses Tutorial benötigt die folgenden Command Line Tools: | ||
+ | *[[youtube-dl]] Download von Youtube Videos | ||
+ | *[[ffmpeg|FFmpeg]] Videobearbeitung | ||
+ | *[[ImageMagick]] Bildbearbeitung | ||
+ | Die Installation dieser Tools ist beispielsweise über [[MacPorts]] (OS X) oder [[apt-get]] (GNU Linux) möglich. | ||
+ | |||
+ | |||
+ | ==Videodatei mit youtube-dl herunterladen== | ||
+ | |||
+ | Zunächst untersucht man mit der Option '''--list-formats''' in welchen Formaten das gewünschte Video heruntergeladen werden kann: | ||
+ | |||
+ | '''$ youtube-dl --list-formats http://www.youtube.com/watch?v=13eDfrMgFQM''' | ||
+ | ... | ||
+ | Available formats: | ||
+ | 34 : flv [360x640] | ||
+ | 18 : mp4 [360x640] | ||
+ | 43 : webm [360x640] | ||
+ | 5 : flv [240x400] | ||
+ | 17 : mp4 [144x176] | ||
+ | |||
+ | Hat man sich für ein Format entschieden, kann der Download erfolgen: | ||
+ | |||
+ | '''$ youtube-dl -f 18 -o picard.mp4 http://www.youtube.com/watch?v=13eDfrMgFQM''' | ||
+ | |||
+ | Mit der Option '''-f 18''' spezifizieren wir das gewünschte Format, mit der Option '''-o picard.mp4''' den Namen der heruntergeladenen Datei. | ||
+ | Die Datei wird nun in das aktive Verzeichnis heruntergeladen. | ||
+ | |||
+ | |||
+ | ==Videodatei mit FFmpeg beschneiden== | ||
+ | |||
+ | Möchten wir die heruntergeladene Datei zunächst beschneiden (trimmen), können wir dies über die Option '''-ss''' (Startpunkt) und die Option '''-t''' (Dauer) festlegen. Das Format wird in HH:MM:SS:MS angegeben. Den Namen der zu verarbeitenden Datei legen wir über die Option '''-i''' fest. | ||
+ | |||
+ | '''$ ffmpeg -i picard.mp4 -ss 00:00:32 -t 00:00:03 facepalm.mp4''' | ||
+ | |||
+ | ==JPEG Einzelbilder mit FFmpeg extrahieren== | ||
+ | |||
+ | Um ein animiertes GIF zu erstellen benötigen wir Einzelbilder. Diese können mit FFmpeg aus einer Videodatei extrahiert werden. Mit der Option '''-i''' spezifizieren wir das gewünschte Video, mit der Option '''-r''' die gewünschte Bildrate. Je niedriger die Bildrate angegeben wird, desto weniger Einzelbilder erhalten wir. Die erzeugten Dateien erhalten eine durchlaufende Numerierung. In unserem Fall fängt jede Datei mit '''picard_''' an und erhält eine dreistellige Ziffer '''(%03d)''' vor der Endung '''.jpg'''. | ||
+ | |||
+ | ''' $ ffmpeg -i facepalm.mp4 -r 5 picard_%03d.jpg''' | ||
+ | |||
+ | |||
+ | ==Größe der Einzelbilder mit convert (ImageMagick) verändern== | ||
+ | |||
+ | $ convert picard_*.jpg -resize 50% pic_%03d.jpg | ||
+ | |||
+ | Mit der Wildcard '''*''' können wir dem Befehl '''convert''' mitteilen, daß wir alle JPEG Bilder, die mit '''picard_''' beginnen bearbeiten wollen. Die Option '''-resize''' legt den Grad der Größenveränderung in Prozent fest. Die ausgegebenen Bilder werden wie im letzten Punkt wieder laufend numeriert und tragen diesesmal die Vorsilbe '''pic_'''. | ||
+ | |||
+ | |||
+ | ==Animation mit convert (ImageMagick) erstellen== | ||
+ | |||
+ | Zu guter Letzt erstellen wir aus der Bildserie ein animiertes GIF. Die Option '''-set delay''' legt die Abspielgeschwindigkeit fest, die Option '''-loop 0''' erzeugt ein GIF, das kontinuierlich abgespielt wird. Jede andere Zahl würde die Anzahl der Wiederholungen nach dem Laden des GIFs festlegen. | ||
+ | |||
+ | $ convert pic_*.jpg -set delay 20 -loop 0 facepalm.gif |
Version vom 12. April 2018, 18:43 Uhr
Inhaltsverzeichnis
numerate files in folder=
Dieses Skript erzeugt eine durchlaufende Numerierung aller in einem Verzeichnis befindlichen JPEG Dateien. Die Originaldateien werden beibehalten.
Skript
Das Skript kann in einem beliebigen Editor wie etwa TextEdit, Gedit oder vim eingegeben und abgespeichert (etwa als jpeg_numerator.sh) werden.
#!/bin/bash x=1; for i in *jpg; do counter=$(printf %03d $x); ln "$i" ./"$counter".jpg; x=$(($x+1)); done
- In der ersten Zeile wird durch das sog. shebang- Zeichen #! festgelegt, mit welcher Interpretationsumgebung das Skript ausgeführt werden soll. In unserem Fall handelt es sich um die sog. Bash Shell (Bourne Again Shell).
- In der zweiten Zeile wird der variable x der Wert 1 zugewiesen. Hier beginnt unser Zähler
- In der dritten Zeile wird eine Schleife begonnen, die entsprechend der Anzahl der vorhandenen JPEG Bilder loopt
- In der vierten Zeile wird der Variable counter ein dreistelliger String zugewiesen.
- In der fünften Zeile wird mit dem Befehl ln die durchnumerierte Kopie der jeweiligen Datei erzeugt.
- Die sechste Zeile schliesst mit done die in der dritten Zeile definierte for- Schleife
resize all images in one folder
Mit ImageMagick kann man sehr schnell die Größe von Bildern in einem Ordner ändern. Das folgende Beispiel lässt das Ausgangsmaterial unverändert und stellt allen Dateinamen das Präfix edit- voran.
$ for file in *.jpg; do convert $file -resize 800x600 edit-$file; done
Webcambilder mit ffmpeg erzeugen
Standardbefehl um ein Video aus /dev/video0 zu erzeugen:
ffmpeg -f video4linux2 -s 960x720 -r 25 -i /dev/video0 -vcodec copy test.avi
Befehl um aus einem Video Bilder zu erzeugen:
ffmpeg -i test.avi -r 1 -s WxH -f image2 test-%03d.jpeg
Kombinierter Befehl um direkt aus /dev/video0 Bilder zu schießen (“-r 0.1″ entspricht alle zehn Sekunden ein Bild):
ffmpeg -f video4linux2 -s 960x720 -r 1 -i /dev/video0 -f image2 -r 0.1 test-%03d.jpeg
Oder wenn man TGA als Bildformat haben möchte:
ffmpeg -f video4linux2 -s 960x720 -r 1 -i /dev/video0 -f image2 -r 0.1 test-%03d.tga
Mit FFmpeg lassen sich Fotos oder Videos von der Webcam aufnehmen. Folgendes Kommando nimmt z.B. ein Foto auf und speichert es unter image.jpg. Voraussetzung ist, dass die Kamera über /dev/video0 angesprochen werden kann:
ffmpeg -f video4linux2 -s 640x480 -r 1 -i /dev/video0 -vframes 1 -f image2 image.jpg
schleifen etc. als cmd-line
if [ -f unixfile ] then rm unixfile fi
This snippet of code will remove (delete) the file named unixfile if it exists and is a regular file. The -f enclosed within brackets performs this test. These two UNIX commands, the -f test and the remove statement, can be combined and compacted into a single line of code by using the && shell construct:
[ -f unixfile ] && rm unixfile
This statement is read, if command1 is true (has an exit status of zero) then perform command2.
The || construct will do the opposite:
command1 || command 2
If the exit status of command1 is false (non-zero), command2 will be executed.
UNIX pipelines may be used on either side of && or ||, and both constructs can be used on the same line to simulate the logic of an if-else statement. Consider the following lines of code:
if [ -f unixfile ] then rm unixfile else print "unixfile was not found, or is not a regular file" fi
Using && and || together, this block of code can be reduced to:
[ -f unixfile ] && rm unixfile || print "unixfile was not found, or is not a regular file"
Finally, multiple commands can be executed based on the result of command1 by incorporating braces and semi-colons:
command1 && { command2 ; command3 ; command4 ; }
If the exit status of command1 is true (zero), commands 2, 3, and 4 will be performed.
screencasts
$ cvlc screen:// --screen-fps 25 --nooverlay --sout "#transcode{vcodec=h264,vb=2048,scale=0.5,acodec=mp3,ab=128,channels=2}:duplicate{dst=std{access=file,mux=mp4,dst=output.flv}}"
$ ffmpeg -f x11grab -r 25 -s 1424x820 -i :0.0+7,68 -vcodec huffyuv -sameq screencast.avi
siehe auch: http://wiki.ubuntuusers.de/Screencasts?highlight=Pw%20Tbaustell%20Zscreen
Youtube-Video animieren Tutorial
In diesem Tutorial wird beschrieben, wie man nur mit den Mitteln der Kommandozeile aus einem Youtube Video ein animiertes GIF erzeugt. Zunächst laden wir ein Video mit youtube-dl herunter, zerlegen es mit FFmpeg in einzelne Bilder und passen deren Größe mit convert (ImageMagick) an. Abschliessend erzeugen wir ebenfalls mit dem Befehl convert das animierte GIF.
Voraussetzungen
Dieses Tutorial benötigt die folgenden Command Line Tools:
- youtube-dl Download von Youtube Videos
- FFmpeg Videobearbeitung
- ImageMagick Bildbearbeitung
Die Installation dieser Tools ist beispielsweise über MacPorts (OS X) oder apt-get (GNU Linux) möglich.
Videodatei mit youtube-dl herunterladen
Zunächst untersucht man mit der Option --list-formats in welchen Formaten das gewünschte Video heruntergeladen werden kann:
$ youtube-dl --list-formats http://www.youtube.com/watch?v=13eDfrMgFQM ... Available formats: 34 : flv [360x640] 18 : mp4 [360x640] 43 : webm [360x640] 5 : flv [240x400] 17 : mp4 [144x176]
Hat man sich für ein Format entschieden, kann der Download erfolgen:
$ youtube-dl -f 18 -o picard.mp4 http://www.youtube.com/watch?v=13eDfrMgFQM
Mit der Option -f 18 spezifizieren wir das gewünschte Format, mit der Option -o picard.mp4 den Namen der heruntergeladenen Datei. Die Datei wird nun in das aktive Verzeichnis heruntergeladen.
Videodatei mit FFmpeg beschneiden
Möchten wir die heruntergeladene Datei zunächst beschneiden (trimmen), können wir dies über die Option -ss (Startpunkt) und die Option -t (Dauer) festlegen. Das Format wird in HH:MM:SS:MS angegeben. Den Namen der zu verarbeitenden Datei legen wir über die Option -i fest.
$ ffmpeg -i picard.mp4 -ss 00:00:32 -t 00:00:03 facepalm.mp4
JPEG Einzelbilder mit FFmpeg extrahieren
Um ein animiertes GIF zu erstellen benötigen wir Einzelbilder. Diese können mit FFmpeg aus einer Videodatei extrahiert werden. Mit der Option -i spezifizieren wir das gewünschte Video, mit der Option -r die gewünschte Bildrate. Je niedriger die Bildrate angegeben wird, desto weniger Einzelbilder erhalten wir. Die erzeugten Dateien erhalten eine durchlaufende Numerierung. In unserem Fall fängt jede Datei mit picard_ an und erhält eine dreistellige Ziffer (%03d) vor der Endung .jpg.
$ ffmpeg -i facepalm.mp4 -r 5 picard_%03d.jpg
Größe der Einzelbilder mit convert (ImageMagick) verändern
$ convert picard_*.jpg -resize 50% pic_%03d.jpg
Mit der Wildcard * können wir dem Befehl convert mitteilen, daß wir alle JPEG Bilder, die mit picard_ beginnen bearbeiten wollen. Die Option -resize legt den Grad der Größenveränderung in Prozent fest. Die ausgegebenen Bilder werden wie im letzten Punkt wieder laufend numeriert und tragen diesesmal die Vorsilbe pic_.
Animation mit convert (ImageMagick) erstellen
Zu guter Letzt erstellen wir aus der Bildserie ein animiertes GIF. Die Option -set delay legt die Abspielgeschwindigkeit fest, die Option -loop 0 erzeugt ein GIF, das kontinuierlich abgespielt wird. Jede andere Zahl würde die Anzahl der Wiederholungen nach dem Laden des GIFs festlegen.
$ convert pic_*.jpg -set delay 20 -loop 0 facepalm.gif