如何将这两个 FFmpeg 命令合并为一个命令?

如何将这两个 FFmpeg 命令合并为一个命令?

我正在使用 ffmpeg 修改多个.mp4文件。

首先我使用此命令将默认语言从 更改engfr

ffmpeg.exe -i "imput 1.mp4" -map 0 -c copy -disposition:a:0 0 -disposition:a:1 default "Output 2.mp4" 

然后我想使用此命令将软字幕从.srt文件添加到.mp4.

ffmpeg.exe -i "Input 1.mp4" -i "Input 2.srt" -c copy -c:s mov_text -metadata:s:s:0 language=fr "Output 1.mp4"

这两个命令独立工作,但我想将它们合并在一行中。

我尝试过类似的方法,但只有音频发生了变化,对字幕没有影响。

ffmpeg.exe -i "Input 1.mp4" -i "Input 2.srt" -map 0 -c copy -disposition:a:0 0 -disposition:a:1 default -c:s mov_text -metadata:s:s:0 language=fr Output 1.mp4"

我知道有什么地方不对劲但我就是想不出来。

有人能告诉我我的组合命令有什么问题吗?

然后,正如我之前所说,我正在处理多个文件(确切地说是 314 个),每个文件都有自己的名称,每次手动更改文件名很麻烦。有没有办法对目录中的每个文件都执行此操作?

答案1

尝试在视频 + 字幕所在的文件夹中打开命令提示符并使用此命令:

for %a in (*.mkv *.mp4) do ffmpeg -i "%a" -i "%~na.srt" -map 0 -map 1:s:0 -disposition:a:0 0 -disposition:a:1 default -c copy -metadata:s:s:0 language=fr "%~na_new.%~xa"

它应该创建一个新视频,其名称与旧视频相同,但名称中带有“new”,并且音频和字幕已更改。

相关内容