【问题标题】:ffmpeg-Error "Buffer queue overflow, dropping." when merging two videos with delayffmpeg-错误“缓冲区队列溢出,丢弃。”延迟合并两个视频时
【发布时间】:2017-01-27 04:39:31
【问题描述】:

我想合并两个视频(例如来自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

我收到错误消息:

[Parsed_overlay_3 @ 0x7fe892502ac0] [framesync @ 0x7fe892502b88] Buffer queue overflow, dropping.

并且合并后的视频有很多丢帧。

我知道还有其他一些带有此错误消息的帖子。但是建议的解决方案对我不起作用。

我该如何解决这个问题?

【问题讨论】:

  • 您尝试过哪些建议的解决方案?
  • 我尝试setpts=PTS-STARTPTS为音频通道,但结果是一样的。

标签: audio video ffmpeg


【解决方案1】:

FFmpeg 正在从 [2:v] 丢帧,因为处理 [0][1:v]overlay 所用的时间超过了丢帧阈值。

在 2:v 中插入一个 fifo 过滤器来避免这种情况。

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

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

【讨论】:

  • 效果很好。谢谢!我以前从未使用过fifo-filter。
  • 感谢您的解释(“[0][1:v]overlay 的处理时间超过了丢帧阈值”),它真的很有帮助。我在生成 GIF 时遇到了这个错误。修复方法是在使用调色板生成 GIF 之前在单独的命令中生成调色板。
  • 对于 GIF,它可以在一个命令中完成,在 palettegen 之后使用 FIFO 过滤器。
  • @Mulvya 我试过了,但 fifo 不接受palettegen 的输出(可能是因为输出是图片,而不是视频)。不过,我不记得我脑海中出现的确切错误信息。
  • FWIW 我不得不再做一次,这次我想通了。 fifo 过滤器必须在分割过滤器之后,在视频流和使用该视频的调色板过滤器之间。 fifo 过滤器只接受一个流,因此您必须确保视频流被传递给 fifo,而不是来自paletteuse 的输出。例如。 split[x][z];[z]palettegen[y];[x]fifo[a];[a][y]paletteuse
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-31
  • 2017-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多