# optional cropping
if [ "$1" == "cropit" ]; then
ITS_CROP_TIME=
mkdir cropped; for i in *.mp4; do ffmpeg -i "$i" -filter:v "crop=1920:980:0:-100" cropped/"${i%.*}.mp4"
rm -r *.mp4
cd cropped
cp -r *.mp4 ../
fi
# optional cropping
このように文字列を使用できますかITS_CROP_TIME=
(下のコードの出力をキャプチャするために)?この変数をスクリプトのどこかに配置すると、変数定義でコマンドが実行されますか?
これはどうですか?これはうまくいくでしょうか?
if [ "$1" == "cropit" ]; then
ITS_CROP_TIME=mkdir cropped; for i in *.mp4; do ffmpeg -i "$i" -filter:v "crop=1920:980:0:-100" cropped/"${i%.*}.mp4"; rm -r *.mp4; cd cropped; cp -r *.mp4 ../
fi
答え1
#!/bin/bash
set -e
if [ "$1" == "cropit" ]; then
ITS_CROP_TIME="$(
mkdir cropped;
for i in *.mp4; do
ffmpeg -i "$i" -filter:v "crop=1920:980:0:-100" cropped/"${i%.*}.mp4"
done
rm -r ./*.mp4
cd cropped
cp -r ./*.mp4 ../
)"
fi
答え2
ITS_CROP_TIME
後で実行するコマンドバーに変数を設定したいとしますか?
この機能の目的は次のとおりです。
crop_all_in_dir () {
local source_dir="$1"
local dest_dir="$2"
mkdir -p "$dest_dir"
for file in "$source_dir"/*.mp4; do
[ ! -f "$file" ] && continue
ffmpeg -i "$file" -filter:v "crop=1920:980:0:-100" "$dest_dir/(basename "${file%.*}").mp4"
done
}
その後、後でスクリプトから呼び出すことができます。
# optional cropping
if [ "$1" = "cropit" ]; then
crop_all_in_dir . cropped
fi
つまり、*.mp4
現在のディレクトリ内のすべてのファイルを切り取り、切り捨てられたファイルをそのディレクトリcropped
(現在のディレクトリのサブディレクトリ)に配置するか、出力ディレクトリがまだない場合に作成します。
この関数は非破壊的な方法で切り捨てを実行するため、cp
元のファイル(ユーザーファイルなど)の置き換えは関数の外部で行われます。