首页 > 解决方案 > FFMPEG 输入区域失败

问题描述

我正在尝试将输入剪辑转换为固定的填充输出并在其上应用覆盖。

此命令适用于调整大小:

ffmpeg -y -i clip.mp4 -vf scale="min(iw*375/ih\,500):min(375\,ih*500/iw),pad=500:375:(500-iw)/2:(375-  ih)/2" output.mp4

我创建了以下一个以确保创建叠加层:

ffmpeg -y -i clip.mp4 -i clip_overlay.png -strict -2 -filter_complex "[0]scale=min(iw*375/ih\,500):min(375\,ih*500/iw),pad=500:375:(500-iw)/2:(375-ih)/2[v];[v][1]overlay=x=W-w-5:y=H-h-5" output.mp4

我找不到错误,但 ffmpeg 返回:

[Parsed_pad_1 @ 0x2eae8e0] Input area 144:0:355:375 not within the padded area 0:0:500:374 or zero-sized
[Parsed_pad_1 @ 0x2eae8e0] Failed to configure input pad on Parsed_pad_1
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #1:0
[aac @ 0x2eb3020] Qavg: 102.113
[aac @ 0x2eb3020] 2 frames left in the queue on closing

为什么上面的命令有效,并且与第二个命令结合起来,它没有?

标签: ffmpeg

解决方案


典型 MP4 视频流中最常见的像素格式是 yuv420p,默认编码器 (x264) 要求尺寸均匀。

所以,设置 pad 使用均匀的尺寸,

ffmpeg -y -i clip.mp4 -i clip_overlay.png -strict -2 -filter_complex "[0]scale=min(iw*375/ih\,500):min(375\,ih*500/iw),pad=500:376:(500-iw)/2:(376-ih)/2[v];[v][1]overlay=x=W-w-5:y=H-h-5" output.mp4


推荐阅读