2

首先——我不是程序员或脚本编写者——这正是我这几天一直在玩的东西。

我有一个包含 mp4 视频文件和 srt 字幕文件的文件夹。我已经使用 mencoder 和 handbrake 手动重新编码,将字幕硬编码到视频文件中。

mencoder -oac pcm -ovc raw -sub NAMEOFVIDEO.sub -utf8 -o NAMEOFVIDEO_SRT NAMEOFVIDEO.mp4

这很好用,是我正在寻找的。所以我所拥有的是这个 /working 目录,其中包含多个 .srt 和 .mp4 (每天可能有 2 或 3 个新视频和 srt 文件)

如果只有 1 个 .srt 和 1 个 .mp4 文件,我可以管理但是我试图弄清楚如果我有 2 或 3 个不同的 srt 和 mp4 文件作为 mencoder,我如何创建一个可以运行 mencoder 命令的 Bash 脚本行必须使用正确的相应 srt 文件和 mp4 文件组合运行。

我能想到的只是mp4_file= find \working -type f -name "*.mp4" | head -1找到第一个结果.mp4

srt_file = find \working -type f -name "*.srt" | head -1找到第一个结果 .srt (幸运的是它是相同的基本名称文件)

然后通过 mencoder 命令运行变量,mencoder -oac pcm -ovc raw -sub $srt_file -utf8 -o $mp4_file-SRT $mp4_file但正如我所说,如果有超过 1 个文件组合(可能是一个循环),那么我必须坚持输出HandBrakeCLI --preset "High Profile" -i $mp4_file-SRT -o $mp4_file

这太可怕了,我错过了一些更简单的方法来做到这一点?

4

1 回答 1

1

如果它总是相同的基本名称,你可以用find一个循环来做到这一点:

find /working -type f -name '*.mp4' | while read mp4; do
    b=`basename $mp4 .mp4`
    d=`dirname $mp4`
    mencoder -oac pcm -ovc raw -sub $d/$b.sub -utf8 -o $mp4-SRT $mp4
done

如果 mp4 和子文件有不同的名称或位于不同的目录中,这当然行不通。

于 2012-10-23T14:26:00.907 回答