gpt4 book ai didi

bash - 如何将多个文件通过管道传输到 ffmpeg?

转载 作者:行者123 更新时间:2023-12-04 23:30:09 24 4
gpt4 key购买 nike

我正在尝试制作一个 bash 脚本,该脚本在给定路径上的所有子文件夹中搜索 .mov 文件,并使用 ffmpeg 转换它们并将它们输出到目标文件夹中,同时保留剪辑名称。

我对脚本很陌生,我很难找出如何解决这个问题。

到目前为止,我已经尝试使用 ls 和 find 来输出文件路径,但不知道如何以正确的方式将其传输到 ffmpeg。

有什么线索吗?

编辑:

取得了一些成功:

#!/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;

但是,它似乎输出到源文件夹要求覆盖。如何正确设置参数以便输出到“目标文件夹”并保留文件名?

最佳答案

你可以从这个开始:

#!/bin/bash

shopt -s extglob || {
echo "Unable to enable exglob."
exit 1
}

TARGETEXT='.avi'
TARGETPREFIX='/path/to/somewhere/' ## Make sure it ends with /.

while IFS= read -r FILE; do
BASE=${FILE##*/}
NOEXT=${BASE%.*}
TARGETFILEPATH=${TARGETPREFIX}${NOEXT}${TARGETEXT}
echo ffmpeg -i "$FILE" "$TARGETFILEPATH" ## Remove echo if it's already correct.
done < <(exec find -type f -name '*.mov') ## You could also use -iname '*.sh' instead.

当然,您可以使用自定义目录来搜索文件:
find /path/to/directory -type f -name '*.mov'

关于bash - 如何将多个文件通过管道传输到 ffmpeg?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18226918/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com