You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FFmpeg从RTSP流提取帧异常:每秒输出远超2帧的问题排查

FFmpeg处理RTSP流的两个问题解析

一、Node.js提取帧数量超标的原因及解决

你同时设置了-r 2(输入帧率)和-vf fps=2(滤镜降帧),但输入侧的-r参数不适用于RTSP流:

  • RTSP是实时流,自带时间戳和固定帧率,强制用-r 2会让FFmpeg错误地将原流的帧按2fps的节奏解码,人为拉长输入时间轴,导致后续的fps=2滤镜因时间戳混乱无法生效,反而输出大量重复帧。
  • 正确做法是删除输入侧的-r参数,仅保留-vf fps=2来控制每秒输出2帧。

示例Node.js spawn调用的正确参数数组:

[
  "-i", "rtsp://your-stream-url",
  "-vf", "fps=2",
  "-f", "image2pipe",
  "-vcodec", "mjpeg", // 可选,也可替换为png
  "pipe:1"
]

二、终端生成视频慢动作的原因及解决

终端命令里的-r 2同样是错误设置:

  • 给RTSP输入设置-r 2后,FFmpeg会把原流所有帧按2fps的时长计算,比如原流是25fps,原本1秒的内容会被当成12.5秒处理,视频时长被强行拉长,播放自然呈现慢动作。
  • 正确做法是去掉输入侧的-r参数,若要控制输出视频帧率,在输出侧设置-r 2或保留-vf fps=2即可:

示例正确终端命令:

ffmpeg -i rtsp://your-stream-url -vf fps=2 -r 2 output.mp4

这样FFmpeg会按原流实际帧率解码,再通过滤镜将输出帧率降到2fps,生成的视频时长正常,不会出现慢动作。

内容的提问来源于stack exchange,提问作者distante

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 17:55:21