ffmpeg - 如何在不损失质量的情况下应用过滤器

Mic*_*key 7 ffmpeg

这是一个简单的请求,它有一个输入,输出和两个水印.从我收集的内容来看,我无法申请,-codec copy因为我正在使用过滤器.

ffmpeg -i input.mp4 -i wm-bl.png -i wm-br.png -filter_complex "overlay=x=0:y=H-h,overlay=x=W-w:y=H-h" output.mp4
Run Code Online (Sandbox Code Playgroud)

就水印而言,这就是技巧,但输出被压缩到原始文件大小的一半.

是否可以在不损失视频质量的情况下进行水印?

llo*_*gan 14

您必须重新编码才能执行任何过滤

因此,将忽略在过滤时进行流复制的任何尝试.这就是为什么-codec copy对你没有任何帮助.

您可以重新编码为无损格式

虽然您必须重新编码进行过滤,但这并不意味着您必须失去质量.您可以使用无损编码器:

  • -codec:v libx264 -crf 0 -preset veryslow
  • -codec:v huffyuv
  • -codec:v ffv1
  • -codec:v ffvhuff

输出文件大小可能很大(它们是无损的).

如果发生色度子采样,您可能会遇到一些损失.

有损,但看起来无损

或者,您可以使用看起来"视觉无损"的正确编码设置,但技术上并非真正无损.创建可能看起来无视的H.264视频的示例(取决于输入和查看器,因为质量是主观的):

ffmpeg -i input -codec:v libx264 -crf 18 -preset slow -pix_fmt yuv420p out.mp4
Run Code Online (Sandbox Code Playgroud)

概括起来,-crf控制质量:范围是0-51的对数标度,0是无损的,~18通常被认为是视觉无损的,23是默认的.-preset控制编码速度:超快,超快,非常快,快,快,中(默认),慢,慢,veryslow.

-pix_fmt yuv420p将允许编码器使用与QuickTime等troglodyte播放器兼容的色度子采样方案.它可能需要也可能不需要,具体取决于您的输入,您的ffmpeg版本以及您将如何使用输出,但对于一般用途,使用时包含它并没有什么坏处libx264.

另见