FFmpeg pad过滤器计算错误的宽度
FFmpeg pad filter calculating wrong width
我正在使用
ffmpeg.exe -i in.jpg -filter_complex "[0:v]pad=iw:ih+10:0:0" out.jpg
在图像和视频的底部添加 10px
的填充。
在大多数情况下,它会按预期工作,但有些情况下宽度会偏离 1px
,导致失败并出现错误:
[Parsed_pad_0 @ 000002ba70617c40] Input area 0:0:623:640 not within the padded area 0:0:622:650 or zero-sized
[Parsed_pad_0 @ 000002ba70617c40] Failed to configure input pad on Parsed_pad_0
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #0:0
可以看到输入区域的宽度是623
,填充区域的宽度是622
,但是应该不是这样的,因为我们是用iw
设置的填充的宽度。
这是一张失败的示例图片。
事实证明,您无法在奇数边界处填充子采样像素格式。
解决方法是使用
来创建边界
ffmpeg.exe -i in.jpg -filter_complex "[0:v]pad=ceil(iw/2)*2:ceil((ih+10)/2)*2:0:0" out.jpg
我正在使用
ffmpeg.exe -i in.jpg -filter_complex "[0:v]pad=iw:ih+10:0:0" out.jpg
在图像和视频的底部添加 10px
的填充。
在大多数情况下,它会按预期工作,但有些情况下宽度会偏离 1px
,导致失败并出现错误:
[Parsed_pad_0 @ 000002ba70617c40] Input area 0:0:623:640 not within the padded area 0:0:622:650 or zero-sized
[Parsed_pad_0 @ 000002ba70617c40] Failed to configure input pad on Parsed_pad_0
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #0:0
可以看到输入区域的宽度是623
,填充区域的宽度是622
,但是应该不是这样的,因为我们是用iw
设置的填充的宽度。
这是一张失败的示例图片。
事实证明,您无法在奇数边界处填充子采样像素格式。 解决方法是使用
来创建边界ffmpeg.exe -i in.jpg -filter_complex "[0:v]pad=ceil(iw/2)*2:ceil((ih+10)/2)*2:0:0" out.jpg