通过 mlt xml 传递 ffmpeg 选项

pass ffmpeg options through mlt xml

我正在查看我使用 kdenlive 创建的 MLT XML 文件,并想调整传递给 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 的选项,否则我将如何执行此类优化?

这看起来是 XY problem

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

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

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

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

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

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