FFmpeg:在转码时可以仅对视频文件的一部分应用过滤器

罗伯特·索伦德(Roybert Soylend)

我有一个3:00分钟的短片段,在中间仅从左到右翻转了大约30秒。

因此,如果整个事情从左到右翻转,我只想申请:

ffmpeg -i 3min.mp4 -vf hflip flipped_3min.mp4

但是,由于仅被部分翻转,是否可以在单个ffmpeg命令中为该hflip过滤器应用时间段(1:30-2:00)?

我正在寻找有关此问题的文档,找不到任何种类的东西,想知道它是否在FFmpeg中是不可能的。

贝蒂卜

如何使用仅翻转视频的一部分ffmpeg

在这里,-filter_complex是您的朋友,因为它可以创建过滤输入的链。我们仍将使用hflipfiltergraph中问题中提到过滤器。

您可以像这样申请一个小节:

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

一行便于复制+粘贴:

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

解释:

使用过滤器图有点像创建一系列动作,并且在过滤器文档“过滤简介”部分对此进行了很好的视觉解释1过滤器可与输入配合使用-这是您在过滤器之前看到的位,例如(第一个输入流的视频)或(名为创建的输出)和输出也就是说,一个输入输入根据变换,然后输出或者作为输出输出[0:v][a]afilter

我们在这里有一组简单的操作,如果我们依次进行操作,则可以建立输入和输出的过滤图。

区隔

使用以下命令创建3段视频(来自input [0:v]trim

  • 第一段(90秒),不执行任何操作(输出为[a]
  • 第二段(30秒),hflipsetpts避免持续时间问题(输出调整为[b],并将其传递hflip给输出为[c]

然后将这两者concat合在一起以产生输出[a]+[c] -> [d](持续时间:120 s)

  • 第三段(60秒),再次设置PTS(输出为[e]

连接段以产生输出[d] + [e] -> [out1],并将-map其输出到文件中的最终输出。

这样可以为您提供与原始视频相同的持续时间(180 s),但中间有30秒的部分,该视频被水平翻转2


1

过滤器文档中的视觉表示ffmpeg

在中libavfilter,过滤器可以具有多个输入和多个输出。为了说明可能发生的事情,我们考虑下面的过滤器图。

                [main]
input --> split ---------------------> overlay --> output
            |                             ^
            |[tmp]                  [flip]|
            +-----> crop --> vflip -------+

此过滤器图将输入流分成两个流,然后通过裁剪过滤器和vflip过滤器发送一个流,然后通过将其覆盖在顶部将其与另一个流合并回去。


2经测试使用ffmpeg version N-72939-g5b0f55a

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java的8过滤器列表基于条件从列表中的一部分

剪掉一部分视频-python

C#从视频文件的一部分提取帧

角度过滤器:如何进行预过滤,以便角度过滤器仅考虑整个数据对象的一部分

如何在ffmpeg中仅输入视频文件的一部分

使用ffmpeg_extract_subclip提取视频的一部分-黑色帧

如何过滤函数输出的一部分

日期过滤器不能作为DAX代码的一部分

过滤器d3时如何突出显示分组图表的一部分

使用图遍历的一部分的属性作为其他的过滤器

如何像将过滤器推入数组一样应用过滤器?(这些数组是过滤器对象的一部分)-过滤器:{prop:[],...}

使用ffmpeg和xfade过滤器合并多个视频文件

使用ffmpeg提取视频的一部分

ffmpeg可以从被分割的视频的一部分中捕获帧吗?

AngularJS完全匹配过滤器而不是一部分

跳过视频的一部分,同时使用ffmpeg将其转换为图像

FFmpeg顺序应用过滤器

用ffmpeg将视频的一部分替换为另一视频

如何提取字段的一部分并将其存储到logstash过滤器中的另一个字段中?

仅对图像的一部分应用腐蚀

微过滤器可以替换文件系统的一部分吗?

如何使用过滤后的数据框更新现有 Excel 表的一部分?

ffmpeg 仅对视频的一部分使用 complex_filter 和 alphamerge

FFMPEG:仅反转视频文件的一部分

绘制独立于过滤器的 DataFrame 的一部分

仅对 TextForm 文本的一部分着色

如何编写使用过滤器字段作为计算字段而不是模型字段的一部分的管理器类?

Python - 如何对视频应用过滤器?

仅对一张图表应用过滤器