【发布时间】:2020-11-19 15:26:21
【问题描述】:
我发现了一些关于两个图像或视频之间的交叉淡化的问题和答案,但是需要哪些 ffmpeg CLI 命令来淡化视频本身?
想要的效果说明:
- 从视频开头删除了一些帧(比如 1 秒)
- 从视频的最后 1 秒开始,从开头删除的帧在结束帧上淡入淡出
- 这会导致流畅的循环播放。
【问题讨论】:
标签: ffmpeg
我发现了一些关于两个图像或视频之间的交叉淡化的问题和答案,但是需要哪些 ffmpeg CLI 命令来淡化视频本身?
想要的效果说明:
【问题讨论】:
标签: ffmpeg
使用我工作的时间来扩展@llogan 的答案:
-filter_complex "[0]trim=end=1,setpts=PTS-STARTPTS[begin];[0]trim=start=1,setpts=PTS-STARTPTS[end];[end][begin]xfade=wipedown:duration=1:offset=2"
在弄乱过滤器以弄清楚它们的实际作用之后,这几乎正是我所寻找的(将视频的结尾淡入其自己的开头以进行循环)。首先,here 是对 xfade 过滤器的更清晰的解释,它实际上非常棒,我很高兴知道它的存在。尝试使用一种更具戏剧性的淡入淡出来获得更清晰的过渡画面。
稍微分解一下过滤图(时间戳反映了我正在循环播放的 4 秒视频):
-filter_complex
调用过滤器图
"[0]trim=end=1,setpts=PTS-STARTPTS[begin];
采用第一个输入 ([0]) 时,使用 trim 过滤器在视频末尾制作您想要淡入的部分。将此摘录的 end 设置为第二个 1(可以是任何内容,这会产生 1 秒的摘录)。然后使用setpts 过滤器设置时间戳(摘录?)从零开始。 [begin] 是第一个过滤器链输出的任意标签,但您可以将其称为 [thomas] 或其他名称。
[0]trim=start=1,setpts=PTS-STARTPTS[end];
现在使用trim 进行另一个输入,该输入实际上是整个视频,减去您最终将淡入的 1 秒。这让我有点不知所措,直到我意识到您将第一个块的结尾设置在主块开始的同一点。这个主块获得标签[end]。
[end][begin]xfade=fade:duration=1:offset=2"
现在使用xfade 过滤器使用fade 模式(上面的链接中有所有其他示例)从[end] 溶解到[begin]。您将淡入淡出的持续时间设置为持续1 秒,并在2 秒标记处偏移淡入淡出的开始。请记住,这是一个 4 秒的视频,第一秒基本上被修剪并覆盖到最后,所以你现在有一个 3 秒的视频。您也可以轻松地离开从0 开始的[end] 块(OP 询问了此处描述的内容)。
给它一个output.mov 路径,你就可以开始了。
【讨论】:
【讨论】:
ffprobe to get duration value。 2. 显示您的命令和完整的日志。您可以edit您的问题包含此信息。