Libav:旋转视频,然后添加叠加层

时间:2015-02-25 05:28:04

标签: libav avconv

我正在尝试旋转视频,然后添加叠加层。但是它不起作用,我尝试过各种各样的东西,但没有一个有效。

这是我最接近的:

avconv -i VIDEO.mp4 -i OVERLAY.png -strict experimental -threads auto  -c:a copy -filter_complex "transpose=1;[0:v][1:v]overlay" OUT.mp4 -y

问题是,这会为一个旋转的容器添加两个单独的流,另一个带有徽标!

1 个答案:

答案 0 :(得分:0)

在某种程度上,这正是你要求它做的。您实际上没有正确映射所需的流。

这是我设法在我的机器上快速工作的原因:

avconv -i input.ogv -i logo.jpeg -an -filter_complex '[0:v]transpose=1[rv];[rv][1:v]overlay[final]' -map '[final]' -c:v libtheora out.ogv

让我们来看看这里发生了什么。

  1. -filter_complex需要两个视频流[0:v]和[1:v]
  2. 我旋转[0:v]并将结果存储在[rv]中(你可以在这里找到任何字符串,我选择rv来表示“旋转视频”
  3. 然后我将[rv]和[1:v]传递给叠加层,并将结果保存到[final]中。
  4. 此时的问题是所有其他流仍在某处停留并映射到输出文件。所以我必须做-map '[final']才能将正确的结果字符串映射为唯一的输出视频流。

    默认情况下-filter_complex的过滤器会将内容存储回他们获得的流名称中,但在这种情况下,某些内容会让人感到困惑。在任何一种情况下,无论如何你最终都不需要有两个流。