我有一个 3:00 分钟的短片,中间只从左到右翻转了大约 30 秒。
所以如果整个事情从左到右翻转,我只想申请:
ffmpeg -i 3min.mp4 -vf hflip flipped_3min.mp4
但是由于它只是部分翻转,有没有办法在单个 ffmpeg 命令中为该 hflip 过滤器(1:30-2:00)应用时间段?
我正在寻找有关此的一些文档,但找不到任何此类内容,我想知道在 FFmpeg 中是否不可能。
ber*_*ieb 16
ffmpeg
?这-filter_complex
是你的朋友,因为它可以创建过滤输入链。我们仍将使用hflip
filtergraph 中问题中提到的过滤器。
您可以像这样申请一个小节:
ffmpeg -i input.mp4 -filter_complex "[0:v]trim=start=0:duration=90[a];\
[0:v]trim=start=90:duration=30,setpts=PTS-STARTPTS[b];\
[b]hflip[c];\
[a][c]concat[d];\
[0:v]trim=start=120:duration=60,setpts=PTS-STARTPTS[e];\
[d][e]concat[out1]" -map [out1] flip.mp4
Run Code Online (Sandbox Code Playgroud)
一行便于复制+粘贴:
ffmpeg -i input.mp4 -filter_complex "[0:v]trim=start=0:duration=90[a];[0:v]trim=start=90:duration=30,setpts=PTS-STARTPTS[b];[b]hflip[c];[a][c]concat[d];[0:v]trim=start=120:duration=60,setpts=PTS-STARTPTS[e];[d][e]concat[out1]" -map [out1] flip.mp4
Run Code Online (Sandbox Code Playgroud)
使用过滤器图有点像创建一系列操作,过滤器文档的“过滤介绍”部分中有一个很好的视觉解释1。过滤器与输入一起工作- 这是您在过滤器之前看到的位,例如(第一个输入流的视频)或(创建的名为 的输出) - 和输出。也就是说,一个输入或输入根据变换,然后输出或者作为输出或输出。[0:v]
[a]
a
filter
我们在这里有一组简单的操作,如果我们按顺序执行这些操作,我们可以构建输入和输出的过滤器图。
使用以下方法创建 3 个视频片段(来自输入[0:v]
)trim
:
[a]
)hflip
并setpts
避免持续时间问题(输出修剪为[b]
并将其传递hflip
给输出为[c]
)然后将这两个concat
一起编辑以生成输出[a]+[c] -> [d]
(持续时间:120 秒)
[e]
)连接段以生成 output [d] + [e] -> [out1]
,并将-map
其连接到文件中的最终输出。
这为您提供了与原始视频具有相同持续时间(180 秒),但中间有 30 秒的部分水平翻转2。
1:
ffmpeg
在 中
libavfilter
,过滤器可以有多个输入和多个输出。为了说明可能发生的事情,我们考虑以下过滤器图。
[main]
input --> split ---------------------> overlay --> output
| ^
|[tmp] [flip]|
+-----> crop --> vflip -------+
Run Code Online (Sandbox Code Playgroud)
此过滤器图将输入流拆分为两个流,然后通过裁剪过滤器和 vflip 过滤器发送一个流,然后通过将其覆盖在顶部将其与另一个流合并。
2测试使用ffmpeg version N-72939-g5b0f55a
llo*_*gan 14
一些过滤器通过启用选项支持时间线。
您可以查看过滤器列表,以及它们是否具有时间轴支持ffmpeg -filters
。T
过滤器名称前面的“ ”表示它支持时间线编辑。如果您想要的过滤器没有时间线支持,那么更新您的ffmpeg
过滤器有时会更新以支持这一点。否则,请使用其他答案中所述的修剪过滤器。
ffmpeg
例子:
ffmpeg -i input -vf "hflip=enable='between(t,90,120)'" -c:a copy output
Run Code Online (Sandbox Code Playgroud)
ffplay
例子:
ffplay -vf "hflip=enable='between(t,90,120)'" input
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12833 次 |
最近记录: |