需要编写一个 bash 脚本,抓取文件夹中的每个视频文件并对其应用 ffmpeg 操作

需要编写一个 bash 脚本,抓取文件夹中的每个视频文件并对其应用 ffmpeg 操作

本质上是以下命令的批处理应用程序:

ffmpeg -i "01.mkv" -map 0:a? -map 0:s? -map 0:v -c:v copy -c:a ac3 -c:s copy "test.mkv"

我希望只需在目录中运行此程序,所有新修复的文件将保留旧文件名,并将旧文件附加“old_”或类似名称。我对 bash 几乎一无所知,但对 c++ 和 java 有一些经验,因此术语不是问题,只是我以前从未看过 bash。谢谢!

编辑:明确地说,我希望新文件为“01.mkv”,旧文件重命名为“old_01.mkv”。我的研究表明,这可能需要 gawk,但我对它的了解甚至比对 bash 的了解还要少。

编辑2:我意识到我应该提供我迄今为止能够自己整理的东西。

#!/bin/bash
    for i in $( ls ); do
        ffmpeg -i $i -map 0:a? -map 0:s? -map 0:v -c:v copy -c:a ac3 -c:s copy $i
    done

答案1

好吧,经过几个小时的折腾,我终于找到了答案,幸运的是,我得到了一个之前从未见过的 Google 搜索结果。这就是答案,以防其他人遇到这种情况并需要做类似的事情。

#!/bin/bash
for file in *.mkv;
    do
        oldFile=old_"$file"
        mv "$file" "$oldFile"
        ffmpeg -i "$oldFile" -map 0:a? -map 0:s? -map 0:v -c:v copy -c:a ac3 -c:s copy "$file"
    done

相关内容