首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FFMPEG (libx264)“高度不可被2整除”

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

Stack Overflow用户
提问于 2013-12-30 21:13:11
回答 7查看 137.8K关注 0票数 300

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

这是我正在运行的命令:

代码语言:javascript
复制
/usr/local/bin/ffmpeg -r 24 -i frame_%05d.jpg -vcodec libx264 -y -an video.mp4

有时我会遇到以下错误:

代码语言:javascript
复制
[libx264 @ 0xa3b85a0] height not divisible by 2 (520x369)

在搜索了一点之后,这个问题似乎与缩放算法有关,可以通过添加一个-vf参数来解决。

但是,在我的例子中,我不想做任何缩放。理想情况下,我希望保持尺寸与框架完全相同。有什么建议吗?是否存在h264强制执行的某种纵横比?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-12-30 21:56:05

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

代码语言:javascript
复制
-vf "pad=ceil(iw/2)*2:ceil(ih/2)*2"

全员指挥:

代码语言:javascript
复制
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文档

票数 396
EN

Stack Overflow用户

发布于 2015-04-11 19:48:21

为宽度和高度

使宽度高度可被2除以裁剪过滤器:

代码语言:javascript
复制
ffmpeg -i input.mp4 -vf "crop=trunc(iw/2)*2:trunc(ih/2)*2" output.mp4

如果您想规模而不是裁剪,请将crop更改为scale

用于宽度或高度

使用规模过滤器。这将使宽度1280。高度将自动计算以保持高宽比,的宽度可被2整除:

代码语言:javascript
复制
ffmpeg -i input.mp4 -vf scale=1280:-2 output.mp4

与上述相似,但使高度720并自动计算宽度:

代码语言:javascript
复制
ffmpeg -i input.mp4 -vf scale=-2:720 output.mp4

不能将-2用于宽度高度,但是如果您已经指定了一维,那么使用-2是一个简单的解决方案。

票数 368
EN

Stack Overflow用户

发布于 2014-06-17 09:49:49

如果您希望设置一些输出宽度,并具有与原始输出相同比例的输出

代码语言:javascript
复制
scale=720:-1 

不要陷入这个问题,那么你可以使用

代码语言:javascript
复制
scale="720:trunc(ow/a/2)*2"

(仅供研究如何使用缩放的人使用)

票数 75
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20847674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档