使用 FFmpeg 过滤器而不进行视频转换

Jan*_*aes 8 ffmpeg overlay video-conversion

有没有人知道如何在不更改音频和视频编解码器的情况下在视频上放置图像蒙版?

我正在制作不同的媒体文件用于测试目的,我想控制在 A/V 容器中使用的音频和视频编解码器,现在我需要在 A/V 文件上放置一个图像掩码,而不更改音频和视频编解码器.

使用时ffmpeg -i video.avi -i image.png -filter_complex 'overlay' avi.mkvI can add -acodec copybut not -vcodec copy,这给出了错误:

Streamcopy 请求输出流 0:0,这是从复杂的过滤器图提供的。过滤和流复制不能一起使用。

当仅使用上述命令时,FFmpeg 会将我的流编码为另一种格式(MPEG-4 和 MP3)

evi*_*oup 9

您回答了自己的问题:过滤器与copy. 您在那里使用了视频过滤器,因此您不能使用-vcodec copy-c:v copy;如果您使用的是音频过滤器,您将无法使用-acodec copy-c:a copy

copy,顾名思义,完全复制指定的流,不做任何更改。过滤器改变它们的目标流。根据定义,copy和过滤器是不兼容的。

如果您只想选择特定的视频编解码器,那么这很简单:使用-c:v [codecname]; 您可以看到 ffmpeg 支持的所有编解码器的列表

ffmpeg -codecs
Run Code Online (Sandbox Code Playgroud)

  • 然而,这似乎是糟糕的架构。例如,如果我想做一个“setpts=2*PTS”过滤器来减慢视频速度怎么办。这应该能够仅通过解复用和复用来运行,并且不需要转码!(因为它不访问像素数据,只访问帧元数据)。 (3认同)
  • @EvolvedAI 这是一个好点,ffmpeg 支持位流过滤器,*可以* 与流复制一起使用。我怀疑这只是一个没有人有时间编写一个位流过滤器来执行此操作的情况,因为它是 ffmpeg 的一个相当小众的用途,并且超出了该工具的主要用途。也许你应该在 ffmpeg-users 邮件列表上提出这个问题,和/或在 [their bug tracker](https://ffmpeg.org/trac/ffmpeg) 上提出请求。 (3认同)