video - 并排放置 FFMPEG 视频,按帧编号对齐

标签 video ffmpeg

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

ffmpeg -i "input.mp4" "output/%08d.jpg"

所以,假设我知道视频 A 想要对齐的帧号是 126,而视频 B 的帧号是 179。我想将视频并排对齐,使这两个帧对齐,这样生成的视频将与视频 B 帧 179 同时显示视频 A 帧 126。生成的视频也不应删除任一视频中的任何片段,因此如果其中一个视频尚未开始或未完成,生成的视频会继续播放事件视频,而不是仅播放两个视频应该播放的时间。我还想对齐两个音轨。

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

最佳答案

使用

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 中将 [1][0] 切换adelay 以及 [0] 以及 hstack 和 amix 中的 [1]

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

由于 hstack 的工作原理。延迟视频的第一帧将显示为卡住状态,直到开始播放为止。对于首先完成的视频的最后一帧也是如此。 hstack过滤器还要求两个视频的高度尺寸相同。

关于video - 并排放置 FFMPEG 视频,按帧编号对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42598871/

相关文章:

video - 无论屏幕分辨率如何,JWPlayer 都可以填满整个屏幕

android - 如何使用TextureView显示部分视频?

ffmpeg - 网络服务器上视频编码的可扩展性问题

video - 使用 ffmpeg 将带有 Alpha 的 mov 转换为带有 Alpha 的 VP9 Webm

python - OpenCV:FFMPEG:标签 0x00000021/'!???' 未找到(格式 'mp4/MP4 (MPEG-4 Part 14)')'

python - 如何使用 Django 创建视频文件上传表单?

video - FFMPEG 结合图像、mp3 和 Logo 水印

php - 如何为 CentOS 6.5 版服务器设置 ffmpeg

video - 更改视频分辨率 ffmpeg

python - 如何使用 FFMPEG 驱动程序使 opencv 工作