gpt4 book ai didi

video - FFMPEG:修复低运动区域的口吃

转载 作者:行者123 更新时间:2023-12-04 23:14:32 26 4
gpt4 key购买 nike

我正在尝试使用 FFMPEG 创建具有非常具体的少数要求的视频:

  • 必须具有非常低(理想情况下小于 0.5 秒)的关键帧速率
  • 比特率必须适中 (~1Mbps)
  • 必须以合理的 (~24fps) 帧率运行
  • 宽度必须是 4 的倍数
  • 不得有任何 B 帧
  • 必须是 H.264 基线编码
  • 必须是 FLV

  • 编码速度无关紧要。如果编码 1 秒的视频需要 2 分钟,那绝对没问题。重要的是输出以尽可能低的比特率保持质量。

    为此,我目前有以下 FFMPEG 命令:
    ffmpeg \
    -fflags +genpts \
    -i big_buck_bunny_1080p_stereo.avi \
    -vf "scale=trunc(360*iw/ih/4)*4:360" \
    -vf "settb=1/1000" \
    -r 24 \
    -g 6 \
    -keyint_min 6 \
    -force_key_frames "expr:gte(t,n_forced/4)"\
    -c:v libx264 \
    -preset veryslow \
    -tune zerolatency \
    -profile:v baseline \
    -pix_fmt yuv420p \
    -b:v 1000k \
    -c:a speex \
    -ar 16000 \
    -ac 1 \
    -b:a 64k \
    -f flv bbb_lo.flv

    我希望尝试各种编码选项( me_methodsubq 等),看看它们如何影响质量和比特率。不过,在那之前,我有一个直接的质量问题需要用上面的命令来解决。

    See the video here on YouTube

    我只剪辑了真正演示该问题的视频的一部分。当屏幕区域的颜色发生非常轻微的变化时,就没有运动矢量。这意味着视频的某些部分直到下一个关键帧才会更新。这可以在视频开头左侧的树或兔子还在 sleep 时强烈看到。如果观看者盯着屏幕的某些区域,即使视频实际上以每秒 24 帧的速度运行,它可能看起来视频仅以每秒 4 帧(我的关键帧速率)运行——它只是没有更新整个屏幕。

    只要保留运动,如果屏幕的这些区域变得严重模糊,我会没事的。做了一些研究,我认为选项 -flags2 -fastpskip会解决这个问题,但是这个选项对我不起作用:
    [libx264 @ 0x55b63e32c760] [Eval @ 0x7ffea2a7a830] Undefined constant or missing '(' in 'fastpskip'
    [libx264 @ 0x55b63e32c760] Unable to parse option value "fastpskip"
    [libx264 @ 0x55b63e32c760] Error setting option flags2 to value -fastpskip.

    我该如何解决这个问题以牺牲图像质量来保持运动?

    最佳答案

    运动矢量由编码器 (x264) 计算,而不是 ffmpeg。您的视频仍然是 1080p,而不是 360p,给定的比特率非常低,因此在量化过程中,细微的变化会变得平坦。

    每个输出流只能有一个简单的过滤器图,所以

    -vf "scale=trunc(360*iw/ih/4)*4:360" \
    -vf "settb=1/1000" \

    必须成为
    -vf "scale=trunc(360*iw/ih/4)*4:360,settb=1/1000" \

    否则仅应用时基过滤器。

    对于 6 的 GOP 大小,您也可以跳过 keyint 和强制 KF。

    关于video - FFMPEG:修复低运动区域的口吃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51273295/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com