Misc (multimedia): Difference between revisions

From Linuxwiki
Jump to navigation Jump to search
 
(5 intermediate revisions by the same user not shown)
Line 166: Line 166:


== ffmpeg ==
== ffmpeg ==
'''Das''' Tool zum Filme (und Sound) bearbeiten. Hier ein paar Beispiele
'''Das''' Tool zum Filme (und Sound) bearbeiten. Hier ein paar Beispiele:

* Sound entfernen:
$ ffmpeg -i MVI_1747.MOV -vcodec copy -an MVI_1747_mute.MOV
* Bild um 180° drehen:
* Bild um 180° drehen:
$ ffmpeg -i input.mp4 -vf "transpose=2,transpose=2" output.mp4
$ ffmpeg -i input.mp4 -vf "transpose=2,transpose=2" output.mp4


* Sound entfernen:
$ ffmpeg -i MVI_1747.MOV -vcodec copy -an MVI_1747_mute.MOV
* Sound extrahieren (als mp3 abspeichern):
* Sound extrahieren (als mp3 abspeichern):
# ffmpeg -i MVI_1751.MOV MVI_1751.mp3
# ffmpeg -i MVI_1751.MOV MVI_1751.mp3
* Lautstärke verändern (z.B. 1.5fach)
* Lautstärke verändern (z.B. 1.5fach)
# ffmpeg -i input.wav -af "volume=1.5" output.wav
# ffmpeg -i input.wav -af "volume=1.5" output.wav

* 2 Sounddateien mergen:
* 2 Sounddateien mergen:
# ffmpeg -i "concat:MVI_1751.mp3|MVI_1753.mp3" -c copy MVI_1752.mp3
# ffmpeg -i "concat:MVI_1751.mp3|MVI_1753.mp3" -c copy MVI_1752.mp3
Line 183: Line 185:
* 2 Videodateien mergen
* 2 Videodateien mergen
Falls auf Grund unterschiedlicher Codierung sich das obige Beispiel nicht aus Videos übertragen lässt:
Falls auf Grund unterschiedlicher Codierung sich das obige Beispiel nicht aus Videos übertragen lässt:
$ ffmpeg -ifile1.mp4 -i file2.mp4 -filter_complex "[0:v][0:a][1:v][1:a] concat=n=2:v=1:a=1 [outv] [outa]" -map "[outv]" -map "[outa]" out.mp4
$ ffmpeg -ifile1.mp4 -i file2.mp4 -filter_complex "[0:v][0:a][1:v][1:a] concat=n=2:v=1:a=1 [outv] [outa]" -map "[outv]" -map "[outa]" out.mp4


Beispiel für das Zusammenmergen von 3 Videos incl. Sound:
(funktioniert u.U. nicht) Alternative:<br>
$ ffmpeg -i VID_20241225_part1.mp4 -i VID_20241225_part2.mp4 -i VID_20241225_142603~2.mp4 -filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0][2:v:0][2:a:0] concat=n=3 :v=1:a=1[outv][outa]" -map "[outv]" -map "[outa]" output.mp4

Beispiel für das Zusammenmergen von 4 Videos zu 1 großen:
$ ffmpeg -i part1.mp4 -i part2.mp4 -i MVI_0309.MP4 -i MVI_0310.MP4 -filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0][2:v:0][2:a:0][3:v:0][3:a:0]concat=n=4:v=1:a=1[outv][outa]" -map "[outv]" -map "[outa]" bigmovie.mp4

Alternative:<br>
Datei erstellen mit dem Inhalt der Videodateien:
Datei erstellen mit dem Inhalt der Videodateien:
cat > myfile.txt<<EOF
cat > myfile.txt<<EOF
Line 228: Line 236:
-filter_complex "[0:v:0] [0:a:0] [1:v:0] [1:a:0] concat=n=2:v=1:a=1 [v] [a]" \
-filter_complex "[0:v:0] [0:a:0] [1:v:0] [1:a:0] concat=n=2:v=1:a=1 [v] [a]" \
-map "[v]" -map "[a]" $RESULT
-map "[v]" -map "[a]" $RESULT

* Zeitraffer/Zeitlupe

https://medium.com/@sekhar.rahul/creating-a-time-lapse-video-on-the-command-line-with-ffmpeg-1a7566caf877


* Untertitel zufügen
* Untertitel zufügen

Latest revision as of 20:56, 5 March 2025

Fotos vom Smartphone übertragen

  • Geht schnell und stressfrei mit jmtpfs. Dieses lässt sich als Paket installieren.
  • Das Smartphone an den Micro-USB-Port anschließen und die Art der Datenübertragung wählen:
"Daten übertragen (mtp)"
  • Daten z.B. nach /mnt mounten:
jmtpfs /mnt

und von dort kopieren

Anmerkung: Sollte unter KDE folgender Fehler auftreten

Listing raw device(s)
Device 0 (VID=...) is a Samsung Galaxy models (MTP).
Found 1 device(s):
Samsung: Galaxy models (MTP) (...) @ bus 1, dev 10
Attempting to connect device(s)
libusb_claim_interface() reports device is busy, likely in use by GVFS or KDE MTP device handling already
LIBMTP PANIC: Unable to initialize device
Unable to open raw device 0

Kann man folgendes versuchen:

 killall kiod5

bzw.

killall gvfs-udisk2

unter xfce.

Leider ist es unter xfce offenbar nicht mehr möglich mit o.g. Tools ein Smartphone zu mounten. Eine andere Möglichkeit ist der Android Debugger adb.
Installieren und sich den Inhalt der Speicherkarte ansehen:

sudo apt install adb
adb devices

(Es sollte mindestens ein Device angezeigt werden)

adb shell
ls /sdcard/DCIM
strg+d

Außerdem muss man an seinem Android Gerät noch ein paar Einstellungen vornehmen:

  • Developer Mode einschalten (7x auf die Serial tippen)
  • USB Debugging einschalten (unter den Developer Options)
  • Nach dem Einstecken des USB-Kabels Data Transfer wählen (anstatt nur Aufladen)

Eine ausführliche Anleitung für diese Schritte gibt es hier:
https://droidwin.com/fix-adb-device-not-found-error/

Mit

adb pull <source> <destination> 

lassen sich die Dateien nun herunterziehen.

Man kann der adb Shell auch Argumente mitgeben z.B.

adb shell ls /sdcard/DCIM/Camera

Annotations

  • Unter xfce4 kann man Fotos am besten mit jmtpfs herunterladen. Davor muss man konkurierende Prozesse mit Zugriff auf die Kamera in einer Endlosschleife abschießen
while sleep 0.1; do pkill kiod5; pkill gvfs-udisks2; done

und in einer anderen Shell das Device mounten:

mkdir /tmp/cam
jmtpfs /tmp/cam
Device 0 (VID=18d1 and PID=4ee2) is a Google Inc Nexus/Pixel (MTP+ADB).
Android device detected, assigning default bug flags
ls /tmp/cam/Interner\ gemeinsamer\ Speicher/DCIM/
Camera  PeakLens
  • Unter kde kann man sich mir dem adb (s.o.) behelfen, indem man kiod+gvfs in einer Endlosschleife abschießt (s.o.):
 while sleep 0.1; do pkill kiod5; pkill gvfs-udisks2; done
  • Zu viele Fotos auf einmal herunterladen, bricht irgendwann ab. Hier ein paar Commands, wie man eine Auswahl heruntergeladen bekommt (e.g. Jan. 2024):
 adb shell ls /sdcard/DCIM/Camera|grep IMG_2024 >/tmp/img.txt 
 for IMG in $(grep 202401 /tmp/img.txt) ; do adb pull /sdcard/DCIM/Camera/$IMG CAM/; done

Bootbaren USB-Stick erstellen

Voraussetzung: Ein Ordner namens ISO, in dem sich bootbare Dateien (z.B. für ein Windows-Image) befinden

Ein ISO-Image lässt sich sehr einfach mit dem Tool xorrisofs erstellen.
Zunächst muss dieses installiert werden

$ sudo apt install xorriso


Das Erzeugen des ISO geht dann wie folgt:

$ xorrisofs -r -J -o ./windows10.iso ./ISO

Das ISO-Image kann man dann mit "dd" auf den USB-Stick kopiert werden. Je nachdem, um welches Device es sich handelt, kann das dann so aussehen:

# dd if=windows.iso of=/dev/sde

Achtung: Keine Partition erstellen/angeben !

Tracks aus Musik-CD extrahieren

$  icedax -D <devicename> -t 1 song1.wav

also z.B.

$ icedax -D /dev/cdrom -t 2 song2.wav
$ icedax -D /dev/cdrom0 -t 3+4 mixed.wav

(macht aus Nr. 3 u. 4 eine große Datei)

Wer lieber mp3s hat, kann cdda2mp3 verwenden.

Musik-CD brennen

Für eine Musik-CD wird KEIN Isoimge erzeugt!
Stattdessen alle wav-Dateien in einem Ordner speichen, dort hineinwechseln und ausführen:

# cdrecord -dao *.wav

cdrecord wird in neueren Debian-Releases durch wodim ersetzt. Beispiel:

$ /usr/bin/wodim -v gracetime=2 dev=/dev/sr0 speed=4 -sao driveropts=burnfree -data

DVD brennen

# growisofs -R -J -Z /dev/dvd /path/to/file-or-directory

wobei -R=Rockridge, -J=Joliet und -Z=device (kann von System zu System variieren). Wer sich nicht sicher ist, kann mit -dry-run den Brennvorgang erstmal simulieren.
Eine sehr schöne Übersicht über DVDs allg. und unter Linux gibt es hier
http://www.rakekniven.de/linux/k-base/dvd-brennen.php

Von DVD extrahieren

Als brauchbar für die Erstellung eines mp4 von DVD hat sich im Test handbrake herausgestellt. Lässt sich als Paket installieren. Nur der Sound kommt etwas leise. Dieser lässt sich mit ffmpeg aufbessern (s.u.).

Monitor kalibrieren

Sehr empfehlenswert ist das Tool DisplayCAL [1], das gängige Kalibrierungsgeräte wie z.B. Spyder, unterstützt.
Verwendete Hardware:
Spyder 3

Hier gibt es eine umfassende Anleitung:

https://www.reallinuxuser.com/how-to-color-calibrate-your-monitor-in-linux/

Anmerkung

Die Originalversion benutzt Python2 und wird daher auf den gängigen Linux-Distributionen nicht mehr unterstützt. Es gibt aber ein Nachfolgeprojekt: https://github.com/eoyilmaz/displaycal-py3 und darauf basierend ein Debianpaket:

$ sudo apt install displaycal

Unten genanntes wurde mit der alten Version und python2 getestet.

Protipp

  • Wer keine guten/farbstichige Ergebnisse erzielt, kann als Whitepoint 5300K versuchen.

Screenshot 2021-02-23 19-55-44.png

  • Am Ende wird ein Profil (.icc Datei) erzeugt. Laden lässt sich dieses mit xcalib:
$ xcalib <profilname>

(und ein bisschen Theorie zu den konfigurierbaren Parametern:

https://displaycal.net/#colorimeter-corrections )

ffmpeg

Das Tool zum Filme (und Sound) bearbeiten. Hier ein paar Beispiele:

  • Bild um 180° drehen:
$ ffmpeg -i input.mp4 -vf "transpose=2,transpose=2" output.mp4
  • Sound entfernen:
$ ffmpeg -i MVI_1747.MOV -vcodec copy -an MVI_1747_mute.MOV
  • Sound extrahieren (als mp3 abspeichern):
# ffmpeg -i MVI_1751.MOV MVI_1751.mp3
  • Lautstärke verändern (z.B. 1.5fach)
# ffmpeg -i input.wav -af "volume=1.5" output.wav
  • 2 Sounddateien mergen:
#  ffmpeg -i "concat:MVI_1751.mp3|MVI_1753.mp3" -c copy MVI_1752.mp3

(Bei größeren Dateimengen ist sox eine gute Alternative:

# sox file1.wav file2.wav ... filen.wav newfile.wav

)

  • 2 Videodateien mergen

Falls auf Grund unterschiedlicher Codierung sich das obige Beispiel nicht aus Videos übertragen lässt:

$ ffmpeg -ifile1.mp4 -i file2.mp4 -filter_complex "[0:v][0:a][1:v][1:a] concat=n=2:v=1:a=1 [outv] [outa]" -map "[outv]" -map "[outa]" out.mp4

Beispiel für das Zusammenmergen von 3 Videos incl. Sound:

$ ffmpeg -i VID_20241225_part1.mp4 -i VID_20241225_part2.mp4 -i VID_20241225_142603~2.mp4 -filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0][2:v:0][2:a:0] concat=n=3 :v=1:a=1[outv][outa]" -map "[outv]" -map "[outa]" output.mp4

Beispiel für das Zusammenmergen von 4 Videos zu 1 großen:

$ ffmpeg -i part1.mp4 -i part2.mp4 -i MVI_0309.MP4 -i MVI_0310.MP4 -filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0][2:v:0][2:a:0][3:v:0][3:a:0]concat=n=4:v=1:a=1[outv][outa]" -map "[outv]" -map "[outa]" bigmovie.mp4

Alternative:
Datei erstellen mit dem Inhalt der Videodateien:

cat > myfile.txt<<EOF
file 'MVI_1547.mp4'
file 'MVI_1610.mp4'
EOF
$ ffmpeg -f concat -i myfile.txt -c copy output.mp4

Sollte das Video nicht sauber durchlaufen, mit avidemux öffnen und die Schnittstelle rausschneiden.

(wer noch immer nicht genug hat: https://trac.ffmpeg.org/wiki/Concatenate )

  • Ab Position n den Rest abschneiden:
#  ffmpeg -i MVI_1752.mp3 -to 00:00:27  MVI_1752_short.mp3
  • Ausschnitt rausschneiden und gleichzeitig als mp3 abspeichern
# ffmpeg -i Buena_Vista_Social_Club.mp4 -ss 00:04:16 -to 00:09:16 bvsc2.mp3
  • Audio zu Video zufügen:
# ffmpeg -i MVI_1747_mute.MOV -i MVI_1752a.mp3 -codec copy -shortest MVI_1747_sound.MOV
  • Film um 180° drehen:
# ffmpeg -i input.mp4 -vf "transpose=2,transpose=2" output.mp4
  • Beispiel für 2 Videodateien zusammenmergen:
#!/bin/bash

F1=MVI_1869.MOV 
F2=MVI_1870.MOV
RESULT=MVI_1871.mp4

# sound
#ffmpeg -i $F1 intermediate.mp3
#ffmpeg -i $F2 intermediate.mp3

# movie ohne sound
# ffmpeg -i $F1 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate1.ts
# ffmpeg -i $F2 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate2.ts
# ffmpeg -f mpegts -i "concat:intermediate1.ts|intermediate2.ts" -c copy -bsf:a aac_adtstoasc $RESULT 
# rm intermediate{1,2}.ts

# movie mit Sound
ffmpeg -i $F1 -i $F2 \
 -filter_complex "[0:v:0] [0:a:0] [1:v:0] [1:a:0] concat=n=2:v=1:a=1 [v] [a]" \
 -map "[v]" -map "[a]" $RESULT
  • Zeitraffer/Zeitlupe

https://medium.com/@sekhar.rahul/creating-a-time-lapse-video-on-the-command-line-with-ffmpeg-1a7566caf877

  • Untertitel zufügen

Wenn die Untertitel als srt Datei vorliegen , muss man sie erst ins ass Format umwandeln:

$ ffmpeg -i subtitles.srt subtitles.ass

Hier gibt es ein Beispiel für ein .srt file im Format

<fortlaufende nr.>

Video mit Untertiteln erzeugen:

$ ffmpeg -i input.mp4 -vf ass=subtitles.ass output.mp4

Wer immer noch nicht genug hat:

https://img.ly/blog/ultimate-guide-to-ffmpeg/

Soundtest mit arecord

Manchmal ist es hilfreich, Headset und Lautsprecher zu testen. So geht das:

$ arecord -f S16_LE -r 3000 | aplay -vvv

avidemux

Nettes Videoschnitttool. Leider nicht mehr als Debianpaket verfügbar. Kann aber hier heruntergeladen werden:
https://www.fosshub.com/Avidemux.html

Am besten das Appimage herunterladen und verlinken z.B.

# ln -s /usr/local/bin/3rdparty/avidemux_2.8.1.appImage /usr/local/bin/avidemux

Bildbetrachter

irfanview

https://www.irfanview.net/faq.htm

Gibt es generisch nur für Windows. Lässt sich aber auf (mindestens) 2 Arten auch für Linux installieren:

1. Snap

https://snapcraft.io/install/irfanview/debian

$ sudo apt install snapd
$ sudo snap install irfanview
$ type -a irfanview

irfanview is /snap/bin/irfanview

2. Wine

Unbedingt darauf achten, die 64bit-Version herunterzuladen!

$ wine iview460_x64_setup.exe

Danach kommt ein Windows-Installer-Fenster.

$ type -a irfanview

irfanview is aliased to `wine /home/kathrin/.wine/drive_c/Program\ Files/IrfanView/i_view64.exe'

gwenview

Hat ein paar nette Eigenschaften, z.B. mehrere Bilder gleichzeitig anzeigen lassen zum Vergleich. Kommt mit KDE oder als gleichnamiges Paket.

.wav Dateien mit xine abspielen

Wenn eine Fehlermeldung missing plugin kommt...

  • libxine2-misc-plugins installieren

Image::Magick

Perlmodul, mit dem man Massenbearbeitung von Bildern (verkleinern, vergrößern, ...) durchführen kann.
Beispielscript resizeXpercent.pl:
Alle Bilder eines bestimmten Ordners werden um X Prozent verkleinert und in einen anderen Ordner gespeichert.

Image Magick mit jpeg-Support benutzen

libjpeg-dev installieren