我正在使用 ffmpeg 修改多个.mp4
文件。
首先我使用此命令将默认语言从 更改eng
为fr
。
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”,并且音频和字幕已更改。