首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一个命令中剪切视频并刻录字幕

在一个命令中剪切视频并刻录字幕
EN

Stack Overflow用户
提问于 2020-01-03 08:27:25
回答 2查看 3.4K关注 0票数 4

我想从视频中剪出一个片段,然后在那一段中刻录副标题。

我可以分三步完成:

  1. 剪掉了视频

ffmpeg -ss 25:00 -to 26:00 -i vid.mp4 -c copy out.mp4

  • cut字幕

视频片段中的ffmpeg -i sub.srt -ss 25:00 -to 26:00 out.srt

  • burn字幕

ffmpeg -i out.mp4 -vf subtitles=out.srt -c:a copy -y final.mp4

但是我想用一个ffmpeg命令来做这件事。

如果我这么做

ffmpeg -ss 25:00 -to 26:00 -i vid.mp4 -vf subtitles=sub.srt -c:a copy -y final.mp4

视频被切割,但没有字幕被刻录在里面。

这太快了。

如果我这么做

ffmpeg -i vid.mp4 -ss 25:00 -to 26:00 -vf subtitles=sub.srt -c:a copy -y final.mp4

视频被剪掉,字幕被正确刻录,但是在开始写final.mp4的过程中出现了延迟。

我认为ffmpeg从一开始就在处理vid.mp4,直到它到达-ss时间(并删除该部分),然后继续处理并写入final.mp4。

有没有一种方法可以快速地在一个ffmpeg命令中做到这一点?

就像ffmpeg直接去-ss时间,剪掉它,处理它,在里面刻录字幕。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-03 09:59:54

是的,字幕过滤器在内部打开字幕文件,并且不知道视频的搜索点,因为ffmpeg在搜索后重置时间戳。

因此,保留源时间戳,然后重置它们,即

代码语言:javascript
复制
ffmpeg -ss 25:00 -to 26:00 -copyts -i vid.mp4 -vf subtitles=sub.srt  -c:a copy -ss 25:00 -y final.mp4
票数 11
EN

Stack Overflow用户

发布于 2022-01-19 22:32:33

字幕作为一个单独的流(就像视频和音频一样)。您需要指定要复制的流。假设视频为Stream #0:0,音频为Stream #0:1,字幕为Stream #0:2,则命令如下

代码语言:javascript
复制
ffmpeg -ss 25:00 -to 26:00 -i vid.mp4 -c copy -map 0:0 -map 0:1 -map 0:2 out.mp4

您可以使用ffprobe查询现有流。

代码语言:javascript
复制
ffprobe -i vid.mp4

会产生这样的结果

代码语言:javascript
复制
Stream #0:0(eng): Video: h264 (High), yuv420p(progressive), 1912x1036 [SAR 1:1 DAR 478:259], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)
Stream #0:1(fre): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448
Stream #0:2(eng): Subtitle: subrip
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59575292

复制
相关文章

相似问题

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