首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将FFMPEG视频并排放置,按帧编号对齐

将FFMPEG视频并排放置,按帧编号对齐
EN

Stack Overflow用户
提问于 2017-03-05 01:15:39
回答 1查看 1.1K关注 0票数 1

所以,我有两个视频,我想放在一起。我想通过我知道的每个视频的帧数来对齐它们,假设两个视频具有相同的FPS。使用以下命令找到帧编号。

代码语言:javascript
运行
复制
ffmpeg -i "input.mp4" "output/%08d.jpg"

因此,假设我知道视频A的帧号是126,而视频B的帧号是179。我希望将视频与这两个帧并排对齐,这样生成的视频将在显示视频A帧126的同时显示视频B帧179。生成的视频也不应该从这两个视频中删除任何片段,所以如果其中一个视频没有开始或没有结束,结果视频将继续播放活动视频,而不是只有两个视频都应该播放的时间。我也想同时对齐两个音轨。

对于这个问题,我更喜欢单命令解决方案,在这种解决方案中,我只需要输入我想要对齐的视频和帧编号,而不是必须手动执行几个步骤。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-05 02:19:34

使用

代码语言:javascript
运行
复制
ffmpeg -i a.mp4 -i b.mp4
 -filter_complex
   "[1]setpts=PTS-STARTPTS+d/FRAME_RATE/TB[b];
    [0][b]hstack[v];
    [1]adelay=dt|dt[ba];
    [0][ba]amix[a]"
 -map "[v]" -map "[a]" out.mp4 

d必须替换为帧对齐的差异,并应用于稍后开始的视频。在你的Q中,A的126号与B的179号对齐,所以A被延迟了53帧,所以d=53。我的命令将视频和音频延迟应用到第二个输入,所以要么按该顺序输入它们,要么在setpts中使用[0]切换[1],在hstack和amix中切换[0][1]

由于音频帧速率不同,您必须提供以毫秒为单位的时间值dt。对于25fps的视频,53帧视频延迟对应于53/25 = 2.12 (s) = 2120 (ms)的音频延迟

由于hstack的工作方式。延迟视频的第一帧将看起来是冻结的,直到它开始播放。首先完成的视频的最后一帧也是如此。hstack过滤器还要求两个视频的高度维度相同。

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

https://stackoverflow.com/questions/42598871

复制
相关文章

相似问题

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