尝试制作一个ffmpeg批处理脚本,该脚本使用位于许多子文件夹中的原始.mov文件制作proress 422代理文件。到目前为止我得到了这个:
#!/bin/bash
echo "drop source folder: "
read source
echo "drop destination folder: "
read des
find "$source" -name '*.mov' -exec sh -c 'ffmpeg -i "$0" -vcodec prores -profile:v 0 -an "$des/${0%%.mov}.mov"' {} \;
exit;
但它不输出到目标文件夹,只输出源文件夹并要求覆盖 - 不是我想要的。
我猜这是一个简单的参数错误,也许你们中的一些人可以发现?
非常感谢所有帮助!
答案 0 :(得分:0)
这是我的建议。看起来这是你之前的帖子的后续行动。
#!/bin/bash
[ -n "$BASH_VERSION" ] || {
echo "You need Bash to run this script."
exit
}
shopt -s extglob || {
echo "Unable to enable exglob."
exit 1
}
until
read -erp "Drop source folder: " SOURCE
[[ -d $SOURCE ]]
do
echo "Drop source folder does not exist: $SOURCE"
echo "You can abort this script by pressing CTRL-C."
done
until
read -erp "Drop destination folder: " DES
[[ -d $DES ]]
do
echo "Drop destination folder does not exist: $DES"
echo "You can abort this script by pressing CTRL-C."
done
while IFS= read -r FILE; do
BASE=${FILE##*/}
NOEXT=${BASE%.???}
echo ffmpeg -i "$FILE" -vcodec prores -profile:v 0 -an "$DES/${NOEXT}.mov" ## Remove echo if it's already correct.
done < <(exec find "$SOURCE" -type f -name '*.mov') ## You could also use -iname '*.sh' instead to also match files like .MOV.
注意:使用-e选项进行读取有助于通过按Tab键轻松生成路径。
答案 1 :(得分:0)
我猜您需要导出 des
变量。
在这种情况下,我总是建议在目标命令之前插入“echo”(“ffmpeg”)
find "$source" -name '*.mov' -exec sh -c 'echo ffmpeg -i "$0" -vcodec prores -profile:v 0 -an "$des/${0%%.mov}.mov"' {} \;
通过这种方式,您将看到正在尝试运行的内容