繁体   English   中英

代码必须找到子目录中的所有MP4文件才能使用ffmpeg进行压缩

[英]Code must find all MP4 files within subdirectory to compress using ffmpeg

我有一个驱动器有很多MP4文件,很难通过文件夹和压缩文件夹。

我正在尝试创建一个在终端中运行的脚本,它将打开指定的文件夹,找到子文件夹中的所有.mp4文件,并使用我用ffmpeg指定的规范压缩文件。 显然,如果正确完成,输出文件的大小应该要小得多。 我正在起草一个我在下面有一个想法的代码,但我对BASH和/或PERL不太好。

for f in $(find ../ -iname '*.avi'); do 
  n=$(echo $f|sed -e 's/.avi/_cbr.mp4/i'); 
  echo "ffmpeg [options] -i $f $n"; 
done

输出:

ffmpeg [options] -i ../1hourjob/videncode/sound10s.avi ../1hourjob/videncode/sound10s_cbr.mp4
ffmpeg [options] -i ../1hourjob/videncode/t003.avi ../1hourjob/videncode/t003_cbr.mp4
ffmpeg [options] -i ../ffmpeg/Masha.avi ../ffmpeg/Masha_cbr.mp4
ffmpeg [options] -i ../ffmpeg/window.avi ../ffmpeg/window_cbr.mp4

我想知道我是否甚至可以为此制作某种GUI。 我觉得有点迷茫。

您可以像这样递归遍历bash中的目录:

avi_to_mp4() {
    cd "$1"
    for f in *; do
        if [[ -d "$f" ]]; then
            avi_to_mp4 "$f"
        elif [[ "$f" == *.avi ]]; then
            newf="${f:0: -4}.mp4"

            echo "$f" to "$newf"     # run your command here

        fi
    done
    cd ..
}

avi_to_mp4 "$1"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM