Benutzer-Werkzeuge

Webseiten-Werkzeuge


linux:allgemein:multimedia:ffmpeg

FFMPEG

Konvertieren

$ ffmpeg -i input.avi output.mp4
$ ffmpeg -i input.avi -c:v libx264 -crf 23 output.mp4
$ ffmpeg -i input.avi -c:v libx265 -crf 28 output.mp4

Mergen / Zusammenführen

$ ffmpeg -i "concat:input1.mpg|input2.mpg|input3.mpg" -c copy output.mpg

Zeitlich schneiden

$ ffmpeg -i input.mp4 -ss 00:03:15 -t 05:16:50 output.mp4

[HH:]MM:SS[.m…]

B-Frames

$ ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi

oben und unten 350 px wegschneiden

$ ffmpeg -i input.mp4 -filter:v "crop=in_w:in_h-700" output.mp4

Geschwindigkeit Faktor 1/2 (halbiert)

$ ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=2.0*PTS[v];[0:a]atempo=0.5[a]" -map "[v]" -map "[a]" output.mp4

Automatisiertes Konvertieren

This is a typical scenario for find and xargs:

$ find /path/to/basedir -name '*.avi' -print0 | xargs -0 convert.sh

where -print0 and -0 ensure the proper handling of names with spaces.

And in convert.sh, you have your for loop, almost the same as in your first script:

#!/bin/bash

for i; do
        d=$(dirname "$i")
#       b=$(basename "$i" | cut -d. -f1)
        FILE=(basename "$i")
        b=${FILE%.*}
        ffmpeg -i "$i"  "$d/$b.mp4"
#        ffmpeg -i "$i" -c:v libx265 -crf 23 -c:a copy "$d/X265_$b"
done

for i without anything means the same as „for all arguments given“, which are the files passed by xargs.

To prepend the filename with a string, you must split the name into the directory and base part, and then put it together again.

linux/allgemein/multimedia/ffmpeg.txt · Zuletzt geändert: 21.06.2020 09:02 von marc