我试图添加多种语言的字幕到视频使用ffmpeg。我成功地添加了1种语言,但似乎无法添加第二种语言。我使用这个简单的脚本添加英语字幕到我的视频。
ffmpeg -i %1 -i subs_eng.srt -map 0 -vcodec copy -acodec copy -scodec subrip -metadata:s:s:0 language=English "%~n1"_eng.mkv此外,我还运行另一个脚本来添加荷兰字幕。
ffmpeg -i %1 -i subs_nl.srt -map 0? -vcodec copy -acodec copy -scodec subrip -metadata:s:s:1 language=Dutch "%~n1"_nl.mkv但是,每当我添加第二语言时,它似乎什么也不做。命令终端显示ffmpeg正在处理视频,但是在vlc媒体播放器中只有1种字幕语言可用(第一种)。
我真的想把它添加到两个镜头中,而不是在同一个脚本中,因为我并不是所有的视频都有两种语言。
发布于 2020-03-31 17:07:35
如果没有-map作为字幕流,ffmpeg将只从所有输入中选择一个字幕流。
ffmpeg -i %1 -i subs_nl.srt -map 0 -map 1 -vcodec copy -acodec copy -c:s:0 copy -c:s:1 subrip -metadata:s:s:1 language=Dutch "%~n1"_nl.mkv我将现有字幕流的编解码模式设置为copy和subrip,仅用于新的。这假设您之前完全屏蔽了一个字幕流。
发布于 2022-02-17 13:44:06
事实上,这更容易。您可以在文件中添加字幕,而无需删除旧的字幕。
ffmpeg -i input.mkv -i input.srt -map 0 -map 1 -c copy output.mkv-map x从一个文件中选择所有流,因此两个文件中的所有流都进入输出文件。如果添加更多的输入字幕,则需要提供-map 2、-map 3等。看到非常有意识和简单的地图文件。
现在,更棘手的是,如果你想正确地标签这些字幕。你可以添加
-metadata:s:s:0 language=heb -metadata:s:s:0 handler_name=Hebrew -metadata:s:s:0 title=Hebrew
-metadata:s:s:1 language=eng -metadata:s:s:1 handler_name=English -metadata:s:s:1 title=English但你需要知道最终的映射,这将取决于原始文件ab/字幕的存在。
阿拉德卡拉科的学分。
https://stackoverflow.com/questions/60955899
复制相似问题