当前位置: 首页 > 知识库问答 >
问题:

输入区域0:0:1280:675不在填充区域0:0:1280:674内或大小为零

雷锋
2023-03-14

我正在为视频列表设置一个填充。当分辨率为854x480时,它起作用,当我切换到1280x720时,它就不起作用了。这很可能是因为奇数,正如这个问题中所述:FFmpeg pad滤波器计算错误宽度

这是我的原始代码(创建过滤器复杂部分的bash脚本):

# Resolution
RES_X=1280
RES_Y=720
...
FILTER_COMPLEX_LIST="${FILTER_COMPLEX_LIST}[$i:v]scale=$RES_X:$RES_Y:force_original_aspect_ratio=1,pad=width=$RES_X:height=$RES_Y:x='if(lt(in_w,$RES_X),($RES_X-in_w)/2,0)':0,setsar=1[v$i];"

我改变了垫宽和垫高的计算,但误差是一样的。

FILTER_COMPLEX_LIST="${FILTER_COMPLEX_LIST}[$i:v]scale=$RES_X:$RES_Y:force_original_aspect_ratio=1,pad=width=ceil($RES_X/2)*2:height=ceil($RES_Y/2)*2:x='if(lt(in_w,$RES_X),($RES_X-in_w)/2,0)':0,setsar=1$

这是一个错误:

[Parsed_pad_19@0x558B4FE3BB40]输入区域0:0:1280:675不在填充区域0:0:1280:674或大小为零的[Parsed_pad_19@0x558B4FE3BB40]无法配置Parsed_pad_19上的输入填充区配置复杂筛选器错误。无效参数

我不明白为什么填充区域首先不是填充区域0:0:1280:720。我应该在哪里添加ceil()或flow()函数来使其工作?

共有1个答案

宰鸿博
2023-03-14

在分析日志时,我意识到了以下几行:

...[Parsed_pad_1@0x564355D71AA0]将“width”设置为值“1280”[Parsed_pad_1@0x564355D71AA0]将“height”设置为值“720”[Parsed_pad_1@0x564355D71AA0]将“x”设置为值“if(lt(in_w,1280),(1280-in_w)/2,0)”[Parsed_pad_1@0x564355D71AA0]将“height”设置为值“0”[Parsed_setsar_2@0x564355B92140]将“sar”设置为值“值“if(lt(in_w,1280),(1280-in_w)/2,0)”[Parsed_pad_4@0x564355B845A0]将“height”设置为值“0”...

…这表明,在代码中

FILTER_COMPLEX_LIST="${FILTER_COMPLEX_LIST}[$i:v]scale=$RES_X:$RES_Y:force_original_aspect_ratio=1,pad=width=$RES_X:height=$RES_Y:x='if(lt(in_w,$RES_X),($RES_X-in_w)/2,0)':0,setsar=1[v$i];"

:0不为y设置值,而是为高度设置值。(设置x值后,在行尾附近)。

这很奇怪,因为大多数时候这段代码都没有失败。在我把这行改成

FILTER_COMPLEX_LIST="${FILTER_COMPLEX_LIST}[$i:v]scale=$RES_X:$RES_Y:force_original_aspect_ratio=1,pad=width=$RES_X:height=$RES_Y:x='if(lt(in_w,$RES_X),($RES_X-in_w)/2,0)':y=0,setsar=1[v$i];"

它起作用了。

Y=还应该包含一个lt()函数来将内容调整到中间,但现在它没有失败。问题是只有部分参数被显式设置,最后一个参数没有,所以ffmpeg遵循了参数的顺序,所以它将错误的参数设置为0。

感谢Gyan讲述-report选项。

 类似资料:
  • 问题内容: 事实证明,计算结果为,尽管和是 不同的 实体。那么,您如何与? 有一个hack: 我可以做得更好吗? 问题答案: 在ECMAScript6中,除了区分正零和负零并计算为之外,其行为类似于。 Chrome 24支持。

  • 问题内容: 我将JTable子类化,并使用DefaultTableModel建模我的表数据。下面的类设置JTable,并向模型添加一行。 在显示/可视化时,将引发以下异常: 我正在扯头发-我还无法找到这个非常简单的用例的根本原因。 问题答案: 我认为您需要在TableModel中添加列。您的代码将UI列添加到表中,但不将其添加到模型中

  • 我试图从我的sqlite数据库中获取一行。当我运行这行代码时:- 我得到以下错误:- android.database.CursorIndexOutOfBoundsException:请求索引0,大小为0 有人能帮我解决这个问题吗?感谢任何帮助或建议。谢谢你。

  • 我得到以下错误: android.database.CursorIndexOutOfBoundsException:请求索引0,大小为0。 根据该代码: 和这个类:错误:

  • 问题内容: 我必须编写一个例程,如果变量的类型为,则将变量的值加1,否则将变量的值分配为0,其中变量的初始值为或。 第一个实现是因为我认为没有数字会使算术表达式为假,但是由于计算为真,所以这是错误的。然后,我得知行为类似于0,并且以下表达式均被评估为true。 当然不是0。被评估为false。这使看似重言式的表达成为错误。 为什么实际上不是0,却像0? 问题答案: 您真正的问题似乎是: 为什么:

  • rank ▲ ✰ vote url 77 340 83 533 url 给字符串填充0 有什么方法可以给字符串左边填充0,这样就可以有一个特定长度. 字符串: >>> n = '4' >>> print n.zfill(3) >>> '004' 对于数字: >>> n = 4 >>> print '%03d' % n >>> 004 >>> print format(4, '03') # pyt