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

使用FFmpeg/ImageMagick转JPG为MP4:保留原图尺寸无裁剪方案问询

解决JPG转MP4时保留原图尺寸的方案(FFmpeg + ImageMagick)

我完全懂你这种 frustration——默认的FFmpeg或ImageMagick参数经常会偷偷调整图片尺寸来适配视频标准,导致辛苦处理的原图被裁剪。别担心,下面这两套方案能帮你严格保留原图尺寸,同时灵活调整帧率:

FFmpeg 实现方案

FFmpeg的核心问题在于部分编码器(比如libx264)要求视频分辨率是2的倍数,如果原图尺寸不符合,默认会自动裁剪或拉伸。我们可以通过参数强制适配规则但不裁剪,或者直接用兼容任意尺寸的编码器。

通用命令(适配所有尺寸 + 自定义帧率)

ffmpeg -framerate 10 -loop 1 -i input.jpg -c:v libx264 -crf 18 -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" output.mp4

参数解释:

  • -framerate 10:设置视频帧率为10fps,你可以改成24、30等任意数值(比如要30fps就写-framerate 30)
  • -loop 1:让图片循环播放(如果只需要播放一次,去掉这个参数即可)
  • -c:v libx264:使用H.264编码器,保证视频在绝大多数设备上兼容
  • -crf 18:控制视频质量,数值越小质量越高(18-28是日常使用的最优范围)
  • -pix_fmt yuv420p:设置通用像素格式,避免部分播放器无法解码
  • -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2":如果原图尺寸不是2的倍数,会自动调整到最近的合规尺寸(比如1921x1081会变成1920x1080),但如果原图已经是2的倍数,这个滤镜不会改变任何尺寸,完美保留原图大小

简化命令(原图尺寸已是2的倍数)

如果你的JPG宽高都是偶数,直接用这个命令即可,完全不会裁剪:

ffmpeg -framerate 24 -loop 1 -i input.jpg -c:v libx264 -crf 18 -pix_fmt yuv420p output.mp4

ImageMagick 实现方案

ImageMagick的操作更直观,但默认也可能会对图片做格式适配,我们需要明确指定尺寸参数来避免裁剪。

基础命令(保留尺寸 + 调整帧率)

convert -delay 10 input.jpg -loop 0 output.mp4

参数解释:

  • -delay 10:每帧的延迟时间,单位是1/100秒,所以-delay 10对应10fps;如果要24fps,计算方式是100/24≈4.17,取整写-delay 4即可
  • -loop 0:设置视频无限循环(只播放一次就改成-loop 1)

强制保留尺寸的保险命令

如果担心ImageMagick自动调整尺寸,可以直接指定原图的宽高,或者强制按100%比例缩放:

# 方法1:指定原图精确尺寸(比如1920x1080)
convert -size 1920x1080 -delay 10 input.jpg -loop 0 output.mp4

# 方法2:强制按原图100%缩放,不做任何调整
convert -delay 10 -resize "100%" input.jpg -loop 0 output.mp4

提升兼容性的优化

如果生成的MP4在部分设备上无法播放,可以指定H.264编码器:

convert -delay 10 input.jpg -loop 0 -video_codec libx264 output.mp4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:24:55