首先 - 我不是程序员或脚本编写者 - 正是我几天来一直玩的。
我有一个包含mp4视频文件和srt字幕文件的文件夹。我已经手动管理使用mencoder和handbrake重新编码,将字幕硬编码到视频文件中。
mencoder -oac pcm -ovc raw -sub NAMEOFVIDEO.sub -utf8 -o NAMEOFVIDEO_SRT NAMEOFVIDEO.mp4
这很好用,我正在寻找。所以我拥有的这个/工作目录有多个.srt和.mp4(每天可能有2或3个新的视频和srt文件)
如果只有1个.srt和1个.mp4文件,我可以管理但是我试图找出如何创建一个可以运行mencoder命令的Bash脚本,如果我有2个或3个不同的srt和mp4文件因为mencoder行必须使用正确的相应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
坚持输出
太可怕了,我错过了一些更简单的方法吗?
答案 0 :(得分: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和子文件具有不同的名称或位于不同的目录中,当然这不起作用。