
だから私はビデオをwebm形式に変換するために私が書いたスクリプトを使用しています。プログラムは、%f
次のようにビデオの絶対ファイル名全体を送信するスクリプトを呼び出します。
converter.sh %f
%f
2つの可能な拡張子.avi
があります.mpg
。
# /bin/bash
ffmpeg -i $1 `dirname $1``basename $1 avi`webm && rm $1
現在の拡張子が削除されているため、ファイルを$1
含める.avi
と完全に機能します。逆に終わる場合、結果はです。basename
.avi
$1
.mpg
.mpgwebm
この2つの可能な形式を許可するようにこのスクリプトをどのように変更しますか?
回復処置:$1
その場合、/somedir/video.avi
スクリプトは次のことを行う必要があります。
ffmpeg -i /somedir/video.avi /somedir/video.webm
その場合、スクリプトは次のことを行う必要があります$1
。/somedir/video.mpg
ffmpeg -i /somedir/video.mpg /somedir/video.webm
私はこれが何人かの人々に愚かに見えるかもしれないことを知っていますが、私は初めてbashに触れました。
答え1
ほとんどのシェルが提供する代替メカニズムを使用できます。
B=$(basename "$1"); D=$(dirname "$1");
ffmpeg -i "$1" "$D/${B%.*}.webm" && rm "$1"
実際に代替を模倣するbasename
こともできます。dirname
注:.*
からサフィックスを直接削除してくださいthis.dir/file
。