Ich verwende also ein Skript, das ich erstellt habe, um Videos in das WebM-Format zu konvertieren. Ein bestimmtes Programm ruft das Skript auf und sendet %f
den vollständigen, absoluten Dateinamen des Videos wie folgt:
converter.sh %f
wo %f
hat zwei mögliche Erweiterungen, .avi
oder .mpg
.
# /bin/bash
ffmpeg -i $1 `dirname $1``basename $1 avi`webm && rm $1
Es funktioniert derzeit einwandfrei, wenn es $1
eine .avi
Datei enthält , da basename
die .avi
Erweiterung entfernt wird. Wenn stattdessen $1
mit endet .mpg
, ist das Ergebnis .mpgwebm
.
Wie kann ich dieses Skript ändern, um diese beiden möglichen unterschiedlichen Formate empfangen zu können?
Fortsetzen: Wenn dies der Fall $1
ist /somedir/video.avi
, sollte das Skript Folgendes tun:
ffmpeg -i /somedir/video.avi /somedir/video.webm
Und wenn $1
ist /somedir/video.mpg
, sollte das Skript tun:
ffmpeg -i /somedir/video.mpg /somedir/video.webm
Ich weiß, dass dies für manche Leute dumm sein könnte, aber ich bin ein bisschen neu in der Bash.
$(…)
*.avi.webm
oder*.mpg.webm
weilbasename
die Erweiterung nicht entfernt wird, es sei denn, Sie geben sie danach an.dirname
,basename
. Und nicht direkt zu verwenden `ffmpeg -i "$ 1" "$ {. 1% *} webm" && rm "$ 1"