ffmpeg - 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
为什么上面的命令有效,并且与第二个命令结合起来,它没有?
解决方案
典型 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
推荐阅读
- android - 尽管不在布局中,但仍在创建片段
- vba - 如何找出使用 VBA 写入 Excel 单元格时出现错误的原因?
- docker - CSV 数据集配置 - Jmeter Docker
- amazon-web-services - AWS Fargate ALB DNS 未解析
- android-studio - Android Studio 3.3 缺少喷气背包创建选项
- c - For循环在C中随机停止
- node.js - node.js 模块答案未定义
- angularjs - 带有 AngularJS 编译模板的 Ag-Grid 标头组件
- css - 伪类选择器相同的值
- c# - 无法从包含 Union 的 Entity Framework Core 查询中获取完整的 SQL 文本