首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash脚本自动将多个字幕转换为视频mp4容器文件

Bash脚本自动将多个字幕转换为视频mp4容器文件
EN

Stack Overflow用户
提问于 2012-10-23 21:52:55
回答 1查看 701关注 0票数 2

首先,我既不是程序员,也不是脚本编写者,这是我这几天一直在做的。

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

代码语言:javascript
复制
mencoder -oac pcm -ovc raw -sub NAMEOFVIDEO.sub -utf8 -o NAMEOFVIDEO_SRT NAMEOFVIDEO.mp4

这工作得很好,这就是我要找的。我有的是这个包含多个.srt和.mp4的/working目录(每天可能有2到3个新的视频和srt文件)

如果只有1个srt和1个.mp4文件,我可以管理,但是如果我有2到3个不同的srt和mp4文件,我想知道如何创建一个可以运行.srt命令的Bash脚本,因为mencoder行必须与正确的相应srt文件和mp4文件组合一起运行。

我能想到的就是像mp4_file= find \working -type f -name "*.mp4" | head -1这样的东西,它可以找到第一个结果.mp4

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

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

这太可怕了,我错过了一些更简单的方法吗?

EN

回答 1

Stack Overflow用户

发布于 2012-10-23 22:26:01

如果它总是相同的基名,你可以用find和一个循环来实现:

代码语言:javascript
复制
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和子文件具有不同的名称或位于不同的目录中,这当然不会起作用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13032059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档