首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ffmpeg将多个字幕分别添加到视频中

使用ffmpeg将多个字幕分别添加到视频中
EN

Stack Overflow用户
提问于 2020-03-31 16:57:40
回答 2查看 3.6K关注 0票数 3

我试图添加多种语言的字幕到视频使用ffmpeg。我成功地添加了1种语言,但似乎无法添加第二种语言。我使用这个简单的脚本添加英语字幕到我的视频。

代码语言:javascript
复制
ffmpeg -i %1 -i subs_eng.srt -map 0 -vcodec copy -acodec copy -scodec subrip -metadata:s:s:0 language=English "%~n1"_eng.mkv

此外,我还运行另一个脚本来添加荷兰字幕。

代码语言:javascript
复制
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种字幕语言可用(第一种)。

我真的想把它添加到两个镜头中,而不是在同一个脚本中,因为我并不是所有的视频都有两种语言。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-31 17:07:35

如果没有-map作为字幕流,ffmpeg将只从所有输入中选择一个字幕流。

代码语言:javascript
复制
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

我将现有字幕流的编解码模式设置为copysubrip,仅用于新的。这假设您之前完全屏蔽了一个字幕流。

票数 3
EN

Stack Overflow用户

发布于 2022-02-17 13:44:06

事实上,这更容易。您可以在文件中添加字幕,而无需删除旧的字幕。

代码语言:javascript
复制
ffmpeg -i input.mkv -i input.srt -map 0 -map 1 -c copy output.mkv

-map x从一个文件中选择所有流,因此两个文件中的所有流都进入输出文件。如果添加更多的输入字幕,则需要提供-map 2-map 3等。看到非常有意识和简单的地图文件

现在,更棘手的是,如果你想正确地标签这些字幕。你可以添加

代码语言:javascript
复制
-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/字幕的存在。

阿拉德卡拉科的学分。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60955899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档