通过 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 通常就可以了。
我正在查看我使用 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 通常就可以了。