如何更改输入视频的ffmpeg缓冲区

Posted

技术标签:

【中文标题】如何更改输入视频的ffmpeg缓冲区【英文标题】:how to change the ffmpeg buffer for input video 【发布时间】:2021-05-26 02:01:26 【问题描述】:

如何更改这个仍然是 3M 的缓冲区

当前启动命令:

ffmpeg -f dshow -i video="screen-capture-recorder" -vcodec libx264 -preset:v ultrafast -filter:v "crop=480:270:0:0" -vf tpad=start_duration=30 -r 30 -g 60 -keyint_min 60 -sc_threshold 0 -b:v 1G -maxrate 2500k -bufsize 1G -rtbufsize 1G -sws_flags lanczos+accurate_rnd -acodec aac -b:a 96k -ar 48000 -ac 2 -f flv rtmp:// 127.0.0.1/live/test

对于我们的最终设置,我们希望在此流中添加 140 秒的延迟。

我们正在设置: -bufsize 1G -rtbufsize 1G -b:v 1G 将我们所有的缓冲区设置为 1G,但似乎它有一个不同的缓冲区,我似乎找不到设置为 3M 左右

【问题讨论】:

【参考方案1】:

它是-rtbufsize,但它应该应用于输入,因此它位于该输入之前。

因此,您的命令将以 ffmpeg -f dshow -rtbufsize 1G -i video="screen-capture-recorder" 开头

【讨论】:

这似乎有效,但它似乎在 1/2 秒内填满了该缓冲区和 2gig 缓冲区。我想这需要压缩才能工作吗? 您的输入是 2560x1440 32 位/像素,30 fps。即 420 MB/s。并且您希望在处理数据之前保留 30 秒的数据。你需要大量的内存。可能有办法将其缓存在磁盘上,但我必须对其进行测试。

以上是关于如何更改输入视频的ffmpeg缓冲区的主要内容,如果未能解决你的问题,请参考以下文章

FFMPEG:为输出流 0:1 缓冲的数据包过多

如何摆脱ffmpeg中的“抖动缓冲区已满”错误?

ffmpeg文档38-视频源

FFmpeg 跳过渲染帧

ffmpeg之视频的编码手动添加SPS以及PPS

如何将视频帧保存到缓冲区中?