从命令行 MP4Box 添加字幕

Posted

技术标签:

【中文标题】从命令行 MP4Box 添加字幕【英文标题】:Adding subtitle from command line MP4Box 【发布时间】:2012-01-23 22:06:01 【问题描述】:

我正在使用 MP4Box 将字幕文件添加到视频中。以下命令可在命令行中完美运行:

c:/GPAC/MP4Box -add c:/test.m4v#audio -add c:/test.m4v#video -add c:/test_en.srt:hdlr=sbtl:lang=en:group=2:layer=-1 -new c:/test2.m4v

但是,我真正想做的是将命令放入 .bat 文件中。以下是我在批处理文件中的命令:

%1/GPAC/MP4Box -add %2/%3#audio -add %2/%3#video %4 -new %2/%3

如您所见,我正在尝试传入“-add c:/test.m4v#video -add c:/test_en.srt:hdlr=sbtl:lang=en:group=2:layer=-1”作为第四个参数。我想这样做的原因是可能会添加许多字幕文件:

"-add c:/test.m4v#video -add c:/test_en.srt:hdlr=sbtl:lang=en:group=2:layer=-1 -add c:/test.m4v#video -添加 c:/test_ja.srt:hdlr=sbtl:lang=ja:group=2:layer=-1:disabled"

所以我不提前知道需要多少个 -add 命令,所以我只想将它们全部作为一个参数传递。但是,mp4box 不喜欢这样。

我不确定这是否是 mp4box 或批处理文件参数的一般限制。

【问题讨论】:

"mp4box 不喜欢这个" - 你能扩展一下吗?你有错误吗? 不,没有错误。不喜欢这个我的意思是它直接从命令行运行,而不是从具有完全相同参数的批处理文件中运行。 【参考方案1】:

我知道这是一个旧线程,但对于将来搜索的任何人。

我在一个批处理文件中使用了以下方法,结合文件菜单工具允许一个简单的右键菜单功能来启动批处理:

for %%a in (*.m4v) do mp4box -add "%%~Na.eng.srt":lang=eng:layout=0x60x0x-1:group=2:hdlr="sbtl:tx3g" "%%a"

【讨论】:

【参考方案2】:

我最终通过在每次需要运行批处理文件时从代码中编写/重写批处理文件来解决这个问题。所以我会用我所有的参数创建批处理文件。运行。然后删除文件。这效果很好。

【讨论】:

【参考方案3】:

Windows 上的批处理文件很古怪,功能有限。您可以使用Cygwin,它允许您在 Windows 上使用真正的 shell(例如 Bash)。

【讨论】:

以上是关于从命令行 MP4Box 添加字幕的主要内容,如果未能解决你的问题,请参考以下文章

如何从命令行添加包?

为啥 WEKA 不从命令行运行?

如何使用作曲家从命令行添加非公共存储库?

如何通过命令行实用程序操作文本:grep、cut、awk、sed 或 BBEdit(Grep 查找选项)

从命令行添加Nuget对VS项目包的引用

Spring Boot 从命令行执行将文件添加到类路径