我试图通过批处理文件遍历我的所有文件夹,并在存在外部字幕文件的地方将它们合并到现有文件中。字幕可以是srt / sub / idx / etc等,基本上是任何格式。大多数语言是英语,但其他语言是少数。视频文件可以是MP4,MKV,AVI。(了解到ffmpeg可能不支持所有这些功能。)
我不想“烙印”字幕,我只是希望它们可用。
如果可能的话,我不想重新编码任何文件,只需添加字幕即可,所以我不需要单独的字幕文件。
我很高兴有人可以共享适当的语法命令行来执行此操作。
我基本上有(但是优雅)框架(批处理文件):
For /R %%A in (D:\Movies) Do (
If Exist %%~dpn.srt (
[awaiting ffmpeg CLI syntax]
Del %%~dpn.srt
)
For /R %%B in ("%%~dpn.*Eng.srt") Do (
[awaiting ffmpeg CLI syntax]
Del %%B
)
If Exist %%~dpn.*Ita.srt (
[awaiting ffmpeg CLI syntax]
Del %%~dpn.srt
)
For /R %%B in ("%%~dpn.*Ita.srt") Do (
[awaiting ffmpeg CLI syntax]
Del %%B
)
If Exist %%~dpn.sub (
[awaiting ffmpeg CLI syntax]
Del %%~dpn.srt
)
If Exist %%~dpn.idx (
[awaiting ffmpeg CLI syntax]
Del %%~dpn.srt
)
[repeat for each subtitle format]
)
我所缺少的是对CLI的简单明了的理解,即仅嵌入(而不是“烙印”)字幕,而无需对每个文件进行重新编码(或者,如果进行重新编码,则需要确保文件不被编码)显着增长)。
提前感谢您的帮助。
谢谢你。
有关同一任务的大量现有文章:
基本上,您只是使用-i
和ffmpeg将两个文件都指定为输入,并且ffmpeg将创建一个组合文件,其中包含它找到的所有输入流。
请注意,并非所有容器都支持所有字幕类型,有些容器可能需要特殊选项。例如,如果要写入MP4文件,则需要-c:s mov_text
将SUB / SRT转换为MP4的国际字幕格式。如果您有格式精美的SSA(.ass)字幕,则只能将它们添加到.mkv容器中。
为避免重新编码,请确保使用“复制”编解码器:-c:a copy
和-c:v copy
。还应避免提及任何提及“ hardsubs”的帖子;不要使用-vf
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句