You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用fluent-ffmpeg模拟object-fit: fill?当前代码更接近contain

解决fluent-ffmpeg模拟CSS object-fit:fill的问题

你的代码里scale=w=${1920}:h=${1080}之所以表现得像object-fit:contain,是因为ffmpeg的scale滤镜默认会保持原视频的宽高比,只会按比例缩放到不超过目标尺寸的大小,不会强制拉伸。

要模拟object-fit:fill(强制将视频拉伸到指定的1920x1080尺寸,完全忽略原比例),你需要修改scale滤镜的参数,禁用宽高比保持:

修改后的代码

ffmpeg(input)
  .output(output)
  .outputOptions("-vf", "scale=w=1920:h=1080:force_original_aspect_ratio=disable")
  .outputOptions("-c:a", "copy")
  .on("end", () => {
    console.log("Video conversion completed");
  })
  .on("error", error => {
    console.error("Video conversion failed:", error);
  })
  .on("progress", function(f) {
    console.log("...frames ", f.frames);
  })
  .run()

补充说明

如果你的原视频带有非1:1的样本宽高比(SAR),可能会导致拉伸后画面显示异常,这时可以在滤镜链里加上setsar=1来统一像素比例:

.outputOptions("-vf", "scale=w=1920:h=1080:force_original_aspect_ratio=disable,setsar=1")

这个参数会强制视频忽略原比例,直接拉伸到目标分辨率,和CSS里object-fit:fill的行为完全一致。

内容的提问来源于stack exchange,提问作者marvelMiles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 20:42:02