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

使用FFmpeg录制Amcrest RTSP摄像头流时丢包致画质异常求助

解决Amcrest RTSP流FFmpeg录制丢包问题

核心问题分析

你当前命令中两次使用-r 5强制固定帧率,会干扰FFmpeg对摄像头原生RTSP流的帧率识别,容易引发帧丢失;另外默认RTSP传输用UDP,本身就存在丢包风险,加上不必要的转码参数可能加剧性能压力。

优化方案步骤

1. 优先使用TCP传输+直接复制流(无转码)

这是最稳定的方案,避免转码带来的CPU负载,同时TCP比UDP更可靠:

ffmpeg -rtsp_transport tcp -i "rtsp://admin:my-password@192.168.0.186:554/cam/realmonitor?channel=1&subtype=0" \
-c:v copy -c:a copy \
/home/trent/Dev/ffmpeg/test.mp4

说明:-rtsp_transport tcp强制TCP传输;-c:v copy -c:a copy直接复制音视频流,不做编码转换,完全匹配摄像头输出。

2. 增加缓冲区与超时参数(应对网络波动)

如果仍有丢包,增大输入缓冲区并设置超时时间:

ffmpeg -rtsp_transport tcp -buffer_size 10M -stimeout 5000000 \
-i "rtsp://admin:my-password@192.168.0.186:554/cam/realmonitor?channel=1&subtype=0" \
-c:v copy -c:a copy \
/home/trent/Dev/ffmpeg/test.mp4

说明:-buffer_size 10M扩大输入缓冲区,缓存更多流数据;-stimeout 5000000设置5秒超时,避免短暂网络中断导致录制终止。

3. 按需调整输出参数(避免输入侧强制修改)

如果确实需要固定帧率或码率,只在输出侧设置参数,不要修改输入流的识别逻辑:

ffmpeg -rtsp_transport tcp -i "rtsp://admin:my-password@192.168.0.186:554/cam/realmonitor?channel=1&subtype=0" \
-r 5 -c:v libx264 -b:v 1024k -maxrate 10000k -bufsize 10000k -c:a aac \
/home/trent/Dev/ffmpeg/test.mp4

说明:输出侧用-r 5调整帧率,使用libx264和aac编解码器确保输出兼容性。

额外排查建议

  • 不要用sudo运行FFmpeg,除非磁盘写入权限不足,过高权限可能导致不必要的系统资源限制;
  • 升级FFmpeg到最新稳定版,旧版本可能存在RTSP协议兼容性问题;
  • 核对摄像头的RTSP流参数(登录摄像头管理页面查看),确保输出参数与原生流参数匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 22:30:49