ffmpeg-Error"缓冲区队列溢出,丢弃".何时延迟合并两个视频

Ste*_*sky 0 audio video ffmpeg

我想合并两个视频(例如来自https://peach.blender.org/trailer-page/的iphone视频).视频将使用覆盖滤镜放置在背景图像上,第二个视频将在3秒后开始播放.

我需要音频混合.

这是我的代码:

ffmpeg \
    -loop 1 -i background.png  \
    -itsoffset 0  -i trailer_iphone.m4v \
    -itsoffset 3  -i trailer_iphone.m4v \
    \
    -y \
    -t 36 \
    -filter_complex "
        [2:a] adelay=3000 [2delayed];
        [1:a][2delayed] amerge=inputs=2 [audio];
        [0][1:v] overlay=10:10:enable='between(t,0,33)' [lv1];
        [lv1][2:v] overlay=10:300:enable='between(t,0,36)' [video]
    " \
    \
    -threads 0 \
    -map "[video]" -map "[audio]" \
    -vcodec libx264 -acodec aac \
    merged-video.mp4
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

[Parsed_overlay_3 @ 0x7fe892502ac0] [framesync @ 0x7fe892502b88] Buffer queue overflow, dropping.
Run Code Online (Sandbox Code Playgroud)

合并的视频有很多丢帧.

我知道这是其他一些发布此错误消息的帖子.但建议的解决方案对我不起作用.

我该如何解决这个问题?

Gya*_*yan 5

FFmpeg正在丢弃帧,[2:v]因为处理[0][1:v]overlay时间超过帧丢弃阈值.

将fifo过滤器插入2:v以避免这种情况.

ffmpeg -loop 1 -i background.png
       -itsoffset 0 -i trailer_iphone.m4v
       -itsoffset 3 -i trailer_iphone.m4v
       -t 36 -filter_complex
         "[2:a]adelay=3000[2delayed];[1:a][2delayed]amerge=inputs=2[audio];
          [0][1:v]overlay=10:10:enable='between(t,0,33)'[lv1];
          [2:v]fifo[2f];[lv1][2f]overlay=10:300:enable='between(t,0,36)'[video]"
       -threads 0 -map "[video]" -map "[audio]" -vcodec libx264 -acodec aac merged-video.mp4
Run Code Online (Sandbox Code Playgroud)

(对于立体声音频,它应该是adelay=3000|3000)