【问题标题】:FFMEPG crop: Invalid too big or non positive size for width '1920' or height '1040'FFMPEG 裁剪:对于宽度“1920”或高度“1040”而言,尺寸过大或非正数无效
【发布时间】:2021-05-13 15:54:17
【问题描述】:

我在 FFMPEG 中遇到了一个特定文件的奇怪问题。当我尝试将其剪裁一点时,我得到:

[Parsed_crop_0 @ 000002ad60c27980] Invalid too big or non positive size for width '1920' or height '1040'
[Parsed_crop_0 @ 000002ad60c27980] Failed to configure input pad on Parsed_crop_0
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #0:37
Conversion failed!

这对我来说很奇怪,因为您甚至可以从流元数据中看到分辨率要高得多:

Metadata:
    encoder         : libebml v1.4.0 + libmatroska v1.6.2
    creation_time   : 2021-02-09T22:45:47.000000Z
  Duration: 02:17:48.93, start: 0.000000, bitrate: 8548 kb/s
    Stream #0:0: Video: h264 (High), yuv420p(progressive), **1920x1080** [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)

只有 1 个视频流。我正在运行以下命令:

ffmpeg -i "wedding.mkv" -filter:v "crop=1920:1040" -c:v libx264 -preset slow -tune film -profile:v high -level 4.1 -crf 19 -c:a copy -c:s copy -map 0 "wedding-cropped.mkv"

我可以使用以下命令预览裁剪而不会出现任何错误:

ffplay -i "wedding.mkv" -vf "crop=1920:960"

我之前已经裁剪了一些文件,没有问题。当视频文件的分辨率明显更高时,为什么在这种情况下会出现分辨率错误,我有点困惑。我还测试了降低裁剪后的分辨率,即使我将两者都降低了几百像素,它仍然会吐出相同的错误。有什么想法或建议吗?

【问题讨论】:

  • 显示完整日志。

标签: ffmpeg crop


【解决方案1】:

我无法准确找出错误发生的原因,但我仍然能够找到解决方案。该视频报告为 1920x1080,甚至以该分辨率播放,但在裁剪时似乎 FFmpeg 报告的分辨率要低得多。我在裁剪之前为视频过滤器添加了一个比例并解决了它。我仍然有点不清楚它出错的原因,好像它的分辨率较低,但最终我能够裁剪视频。

【讨论】:

    【解决方案2】:

    这可能是由元数据轮换引起的。您在问题中指定的元数据中没有 rotate 标记,但希望此答案对其他人有所帮助。

    在元数据中指定旋转时,ffmpeg 会自动旋转视频。如果旋转 90 或 270 度,宽度变为高度,反之亦然,因此裁剪过滤器参数不再正确。在-i 之前添加-noautorotate 会禁用此行为并解决问题。

    【讨论】:

    • 谢谢,下次遇到这个问题时我会检查一下。缩放视频是否会禁用旋转选项?因为当我添加缩放选项时它似乎起作用了。
    • 查看首次引入自动旋转功能的commit,您可能遇到了不相关的错误。在再次使用之前尝试更新 ffmpeg。
    • 会的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-03-16
    • 2021-07-02
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    • 2011-11-02
    相关资源
    最近更新 更多