小编典典

FFMPEG(libx264)“高度不能被 2 整除”

all

我正在尝试使用 FFMPEG 使用 libx264 编解码器从一组帧中编码 .mp4 视频。

这是我正在运行的命令:

/usr/local/bin/ffmpeg -r 24 -i frame_%05d.jpg -vcodec libx264 -y -an video.mp4

我有时会收到以下错误:

[libx264 @ 0xa3b85a0] height not divisible by 2 (520x369)

经过一番搜索后,该问题似乎与缩放算法有关,可以通过添加 -vf 参数来解决。

但是,就我而言,我不想进行任何缩放。理想情况下,我想保持尺寸与框架完全相同。有什么建议吗?是否有某种 h264 强制执行的纵横比?


阅读 24

收藏
2022-05-13

共1个答案

小编典典

原始问题 的答案 应该缩放视频,而是修复height not divisible by 2错误。这可以使用这个过滤器来实现:

-vf "pad=ceil(iw/2)*2:ceil(ih/2)*2"

完整命令:

ffmpeg -i frame_%05d.jpg -vcodec libx264 \
 -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -r 24 \
 -y -an video.mp4

基本上, .h264 需要均匀的尺寸,因此此过滤器将:

  1. 将原始高度和宽度除以 2
  2. 四舍五入到最近的像素
  3. 再次将其乘以 2,从而使其成为偶数
  4. 将黑色填充像素添加到此数字

您可以通过添加过滤器参数来更改填充的颜色:color=white。请参阅pad 的文档

2022-05-13