【问题标题】:ffmpeg video fade effect unsuccessful - no transition or the second videoffmpeg 视频淡入淡出效果不成功 - 没有过渡或第二个视频
【发布时间】:2021-12-13 17:14:23
【问题描述】:

我有 2 个 T-seconds-long 视频,它们是使用以下命令从 PNG 图像制作的:

ffmpeg -i workspace/1.png -vcodec libx264 -t T ./1.mp4
ffmpeg -i workspace/2.png -vcodec libx264 -t T ./2.mp4

使用这些视频,我试图在这两个视频之间创建一个持续 T 秒的过渡,我们从第一个视频开始并淡入第二个视频。这是我想到的转换的简单 ASCII 可视化:

Alpha \ Time    0.........T
1.mp4         100.........0
2.mp4           0.......100

因此,视频和淡入淡出效果都应该立即开始,并以视频本身结束。 (即,偏移量为0,持续时间为T

但是当我尝试制作这样的视频时,生成的MP4 仅包含1.mp4 的视频,没有任何淡入淡出效果。这是我用来制作过渡视频的命令:

ffmpeg -i 1.mp4 -i 2.mp4 -y -filter_complex "xfade=transition=fade:offset=0:duration=T" -t T ./1-2.mp4

我认为filter_complex 选项中的偏移量和持续时间参数足以让过渡继续进行。

我看过类似的 StackOverflow 问题,但在所有这些问题中,淡入淡出效果是顺序运行的视频之间,而不是并行运行。这就是这里发生的事情吗?如何让两个视频从一开始就并行运行,同时对其应用淡入淡出?

【问题讨论】:

    标签: video ffmpeg video-processing


    【解决方案1】:
    1. 您没有循环播放图像,因此您的视频只有 1 帧长。
    2. xfade offset 是您希望发生转换的时间戳。

    示例。每张图片时长 5 秒。从1.png2.png 的 1 秒交叉淡入淡出将在 1.png 开始 4 秒后发生。 output.mp4 时长为 9 秒。

    ffmpeg -loop 1 -t 5 -i 1.png -loop 1 -t 5 -i 2.png -filter_complex "xfade=transition=fade:offset=4:duration=1,format=yuv420p" -movflags +faststart output.mp4
    

    见:

    【讨论】:

    • 谢谢,它按我需要的方式工作。
    猜你喜欢
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多