【问题标题】:FFmpeg command for crossfading between 5 videos .How to manage setpts=PTS-STARTPTS?用于 5 个视频之间的交叉淡入淡出的 FFmpeg 命令。如何管理 setpts=PTS-STARTPTS?
【发布时间】:2016-06-13 06:25:37
【问题描述】:

这里,FFmpeg 中的新功能。我在 FFmpeg 的控制台中使用和测试。

我已经用这个问题完成了 2 个带有交叉淡入淡出的视频连接: 我正在做 5 个视频与交叉淡入淡出合并我刚刚完成了 90% 的合并 我只需要管理 setpts=PTS-STARTPTS 请看看这个。

ffmpeg -i big_buck.mp4 -i big_buck.mp4 -i big_buck.mp4 -i big_buck.mp4 -i 
big_buck.mp4 -filter_complex "[0:v]trim=0:4,setpts=PTS-
STARTPTS,fade=out:st=4:d=1:alpha=1[1]; [1:v]trim=1:4,setpts=PTS-
STARTPTS,format=yuva420p,fade=in:st=0:d=1:alpha=1,fade=out:st=4:d=1:alpha=1[2]; 
[2:v]trim=1:4,setpts=PTS-
STARTPTS,format=yuva420p,fade=in:st=0:d=1:alpha=1,fade=out:st=4:d=1:alpha=1[3]; 
[3:v]trim=1:4,setpts=PTS-
STARTPTS,format=yuva420p,fade=in:st=0:d=1:alpha=1,fade=out:st=4:d=1:alpha=1[4]; 
[4:v]trim=1:4,setpts=PTS-STARTPTS,format=yuva420p,fade=in:st=0:d=1:alpha=1[5]; 
[1][2]overlay,format=yuv420p[12]; [12][3]overlay,format=yuv420p[123]; [4]
[5]overlay,format=yuv420p[45]; [123][45]concat=n=2 [v]" -map [v]  result.mp4

****请注意,每个输入视频 big_buck.mp4 长度为 5 秒 ****。现在在代码中查看 setpts=PTS-STARTPTS 如何在每个视频输入中管理它????

我也在各种论坛上看到过,但我没找到!!! 谢谢你

【问题讨论】:

  • here。这显示了交叉淡入淡出的方法。您必须将叠加输出与第三个视频连接起来。

标签: android video ffmpeg shared-libraries


【解决方案1】:

使用

ffmpeg -i big_buck.mp4 -i big_buck.mp4 -i big_buck.mp4 -i big_buck.mp4 -i 
big_buck.mp4 -filter_complex \
"[0:v]setpts=PTS-STARTPTS[v1]; \
 [1:v]format=yuva420p,fade=in:st=0:d=1:alpha=1,setpts=PTS-STARTPTS+(4/TB)[v2]; 
[2:v]format=yuva420p,fade=in:st=0:d=1:alpha=1,setpts=PTS-STARTPTS+(8/TB)[v3]; 
[3:v]format=yuva420p,fade=in:st=0:d=1:alpha=1,setpts=PTS-STARTPTS+(12/TB)[v4]; 
[4:v]format=yuva420p,fade=in:st=0:d=1:alpha=1,setpts=PTS-STARTPTS+(16/TB)[v5]; 
[v1][v2]overlay[v12]; [v12][v3]overlay[v123]; [v123][v4]overlay[v1234]; [v1234][v5]overlay,format=yuv420p[v]" \
-map [v]  result.mp4

必须修改 PTS,以便每个新剪辑在当前剪辑组合结束前 1 秒开始,即第 3 个剪辑应在 8 秒开始淡入,因为前两个剪辑的组合为 9 秒(4 秒第一个剪辑 + 1 秒过渡 + 4 秒第二个剪辑)。

您不需要淡出,因为下一个剪辑会在顶部淡入。仅当您想要剪切时才需要 concat。


带有音频交叉淡入淡出:

ffmpeg -i big_buck.mp4 -i big_buck.mp4 -i big_buck.mp4 -i big_buck.mp4 -i 
big_buck.mp4 -filter_complex \
"[0:v]setpts=PTS-STARTPTS[v1]; \
 [1:v]format=yuva420p,fade=in:st=0:d=1:alpha=1,setpts=PTS-STARTPTS+(4/TB)[v2]; 
[2:v]format=yuva420p,fade=in:st=0:d=1:alpha=1,setpts=PTS-STARTPTS+(8/TB)[v3]; 
[3:v]format=yuva420p,fade=in:st=0:d=1:alpha=1,setpts=PTS-STARTPTS+(12/TB)[v4]; 
[4:v]format=yuva420p,fade=in:st=0:d=1:alpha=1,setpts=PTS-STARTPTS+(16/TB)[v5]; 
[v1][v2]overlay[12]; [12][v3]overlay[123]; [123][v4]overlay[1234]; [1234][v5]overlay,format=yuv420p[v]; \
[1][2]acrossfade=d=1[a12]; [a12][3]acrossfade=d=1[a123]; [a123][4]acrossfade=d=1[a];" \
-map [v] -map [a] result.mp4

【讨论】:

  • 视频之间没有交叉淡入淡出(视频之间的淡入淡出)[检查为输出结果]。它只是直接合并视频..你可以编辑它...@Mulvya
  • 已更正。淡入淡出后应更改时间戳。或者,可以更改淡入淡出的 st 值。
  • @Mulvya:当我运行你的命令时,有一个小问题。输出视频只有 5 秒而不是 25 秒(每个视频 5 秒)。你能告诉我如何解决它吗?
  • 运行你的命令并添加-report 并链接到生成的日志文件。
  • 当我尝试使用它时,我得到No such filter: '' Error initializing complex filters. Invalid argument。我按原样使用第二个命令,替换我自己的输入。可能会发生什么?
猜你喜欢
  • 2016-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多