小编The*_*uma的帖子

如何在视频上叠加具有透明度的 PNG?(每个 PNG 应覆盖一帧)

我有一个视频 (original.mp4),然后我有一系列具有透明度的 PNG,我想覆盖视频中的每一帧。

我使用的策略是:

  1. 从 PNG 创建视频

    ffmpeg -framerate 60 -pattern_type glob -i images/*.png -c:v libx264 out.mp4

  2. 将两个视频标准化为具有相同的尺寸

    ffmpeg -i out.mp4 -vf scale=1920:960,setsar=0:1,setdar=16:9 out2.mp4
    ffmpeg -i original.mp4 -vf scale=1920:960,setsar=0:1,setdar= 16:9 原版2.mp4

  3. 覆盖 PNG 视频并使其不透明

    ffmpeg -i original2.mp4 -i heatmap2.avi -filter_complex "blend=all_mode='overlay':all_opacity=0.7" result.mp4

这几乎有效,但从 PNG 创建的视频具有黑色背景。我还尝试将视频编码为 .mov 和 .avi,它们应该保留透明度。但是,当我这样做时,黑色背景在叠加后仍然回来了。

如何将 PNG(每个是视频的单个帧)无缝叠加为具有原始透明度的视频?

[编辑 2] 根据 Mulvya 的建议,这是我尝试过的命令

ffmpeg -i original.mp4 -framerate 60 -pattern_type glob -i "images/*.png" -filter_complex "[1:v][0:v]scale2ref=iw:ih[ovr]; [ovr][0:v]blend=all_mode='overlay':all_opacity=0.7[v]" -map [v] result.mp4
Run Code Online (Sandbox Code Playgroud)

和输出:

ffmpeg version 2.8.2 Copyright (c) 2000-2015 the FFmpeg developers …
Run Code Online (Sandbox Code Playgroud)

ffmpeg

4
推荐指数
1
解决办法
9503
查看次数

标签 统计

ffmpeg ×1