Mike
Mike

Reputation: 552

FFMPEG Input area failure

I'm trying to convert an input clip to a fixed, padded output and applying an overlay on it.

This command works fine for resizing:

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

I created the following one to make sure the overlay would be created:

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

I cannot find the error, but ffmpeg returns:

[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

Why does that upper command work, and combined with the second one, it doesn't?

Upvotes: 1

Views: 1513

Answers (1)

Gyan
Gyan

Reputation: 93231

The most common pixel format in a typical MP4 video stream is yuv420p and the default encoder (x264) requires that the dimensions be even.

So, set pad to use even dimensions,

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

Upvotes: 1

Related Questions