首页 > 解决方案 > 通过 mlt xml 传递 ffmpeg 选项

问题描述

我正在查看我创建的 MLT XML 文件,kdenlive并希望调整传递给ffmpeg.

如果我理解正确,这是我需要编辑的部分:

 <consumer f="mp4" g="15" channels="2" crf="15" progressive="1" target="thetargetfile.mp3" threads="0" real_time="-3" format_options="-stillimage" mlt_service="avformat" vcodec="libx264" ab="256k" movflags="+faststart" bf="2" preset="faster" acodec="aac" in="0" out="18263"/>

现在,我想将一个附加标志传递给ffmpeg,在我的情况下-stillimage用于输出的静态图像优化(我的文件是一个录制的幻灯片演示文稿,所以它真的没有理由让它有数百 MB 大)。

是否有一个选项允许将任意标志传递给ffmpeg,或者我将如何进行这样的优化?

标签: ffmpegmlt

解决方案


这看起来是一个XY 问题

最接近的问题是,如何传递静止图像。根本问题是,如何减小幻灯片的文件大小。

因为stillimage,它是编码器的一种调整,所以格式是tune="stillimage"。见https://www.mltframework.org/plugins/ConsumerAvformat/#tune-3

但是,这种调整将产生适度的好处,或者可能根本没有好处。

创建更大文件的两个关键参数是

g="15" ... crf="15"

除非分辨率相当低(< 360p),否则如此低的 CRF 值是一种浪费。将其保持在 23 左右。在如此低的g值下,会生成大量关键帧,这会使文件大小膨胀。对于幻灯片,默认值 250 通常就可以了。


推荐阅读