首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用FFMPEG将不同的MP4s和srt合并到一个文件中

使用FFMPEG将不同的MP4s和srt合并到一个文件中
EN

Stack Overflow用户
提问于 2020-05-18 02:20:04
回答 2查看 396关注 0票数 0

对于那些熟悉So...probably的人来说,这是一个非常基本的问题(我真的不是)。我知道你可以使用FFMPEG将多个视频合并成一个视频,但是如果每个视频都有自己的srt文件,分别保存在一个'subs‘文件夹中,而不包括在视频本身中,那该怎么办呢?

FFMPEG是否也可以将srt文件合并成一个文件(并重新计算时间戳),然后将其合并到最终的组合视频中?如果是这样,命令是什么?

例如,我有video1.mp4和video2.mp4。它们有相应的sub1.srt和sub2.srt。当video1.mp4和video2.mp4合并时,sub2.srt的时间戳当然现在将不同步,并且需要通过将video1.mp4的持续时间添加到各个时间戳来校正(即,如果video1是30秒长,并且sub2.srt中的第一个字幕出现在2秒标记处,则在组合之后,它现在应该出现在(30+2)=32秒标记处,依此类推。

如果它有帮助,所有的文件都是mp4的,并且具有相同的尺寸(720p)。

EN

回答 2

Stack Overflow用户

发布于 2021-05-28 16:46:16

虽然可能有一种(复杂的)方法来首先连接srt文件,但最简单的方法是首先组合成对的视频和文本,然后连接产生的容器文件。

  1. 复制视频1.mp4中的所有内容,并添加sub1.srt

中的字幕

代码语言:javascript
复制
# Assuming English for subtitle language
ffmpeg -i video1.mp4 -i sub1.srt -c copy -c:s mov_text -metadata:s:s:0 language=en -metadata:s:s:0 title=English 1.mp4

-c copy将复制video1.mp4中的所有内容,而-c:s mov_text将把sub1.srt中的文本流格式化为mp4 (mov_text)的字幕。结果将写入1.mp4。

  1. 对所有其他视频字幕对重复相同的命令。

  1. 创建文本文件(f.e.chapters.txt),生成的文件名为

代码语言:javascript
复制
file 1.mp4
file 2.mp4
file 3.mp4
…

  1. 连接文本文件

中列出的结果容器文件

代码语言:javascript
复制
ffmpeg -f concat -safe 0 -i chapters.txt -c copy everything.mp4

请参阅ffmpeg's concatenate demuxer

文档中提到的其他ffmpeg命令也可以处理不同的维度。

票数 1
EN

Stack Overflow用户

发布于 2021-10-25 18:03:56

无论出于什么原因,我必须在步骤4中分别显式地复制视频、音频和字幕流,否则我最终只能看到静默的视频。所以我的第四步看起来是这样的:

ffmpeg -f concat -safe 0 -i chapter.txt -c:v copy -c:a copy -c:s copy everything.mp4

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

https://stackoverflow.com/questions/61856623

复制
相关文章

相似问题

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