我已经使用这个命令好几年了,从 Linux 上的一系列 .svg 文件中生成 .ogg 文件(或任何其他格式):
ffmpeg -y -r 1.2 -i %06d.svg -qscale:v 10 path.ogg
到目前为止,它运行完美,生成的视频分辨率为 100x100,而不是输入文件的 1920x1080。
如果我使用该选项强制将输出分辨率设置为 1920x1080 -s
,则生成的视频是未使用该-s
选项时获得的 100x100 视频输出的放大版本。如果我使用 svg 文件转换为 png,inkscape
一切顺利,但我想避免使我的工作流程变得更加复杂。
您可以在这里找到一些.svg 文件。
有什么想法吗?
看起来 FFmpeg 的新版本(例如 7.1)中(或者可能是在 librsvg 中)有一个错误。
-width
我们可以使用和-height
和参数强制输出分辨率-keep_ar 0
:ffmpeg -y -width 1920 -height 1080 -keep_ar 0 -r 1.2 -i %06d.svg -qscale:v 10 path.ogg
如果我们想获取 SVG 文件的分辨率,我们可以执行:
exiftool 000001.svg
,并获取:View Box: 0 0 1920 1080
。(请注意,执行
ffprobe 000001.svg
显示100x100
,所以我们不能使用 FFprobe)。注意:使用旧版本的 FFmpeg(如 4.2.7),原始命令运行良好,FFprobe 显示 1920x1080。