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

FFMPEG处理RTSP流转HLS时速度低于1x卡顿不退出如何解决?

FFmpeg RTSP转HLS速度下降卡顿解决方案

核心原因

该问题是编码/处理性能跟不上实时流输入速度,导致帧队列持续积压,最终处理速度跌破1倍实时速出现卡顿,无主动退出逻辑导致程序挂住。

优化方案

  • 优化x264编码参数,降低编码耗时
    原命令未指定x264编码预设,默认使用medium预设编码开销高,改为添加-preset superfast(性能优先的预设,实时流场景压缩率损失可忽略),搭配-crf 28固定质量控制,降低码控波动。
  • 减少冗余计算开销
    若摄像头子流(命令中subtype=1即为子流)本身分辨率接近352*288,可直接删除-vf scale=352:288参数省去软缩放开销;必须缩放的话添加-hwaccel auto参数开启硬件加速,解码、缩放都走硬件降低CPU占用。
  • 优化实时流时间戳与缓存配置
    输入参数添加-rtbufsize 10M调大RTSP输入缓存避免网络波动丢帧,添加-use_wallclock_as_timestamps 1用系统时钟做时间戳,避免摄像头自带时间戳不准导致帧堆积;输出参数添加-g 50(按25fps算刚好2秒一个I帧,和hls切片时长对齐)、-r 25固定输出帧率,避免帧率波动导致切片时长异常。
  • 添加异常兜底逻辑
    添加-fflags +discardcorrupt自动丢弃损坏帧,避免坏帧阻塞处理流程;添加-timeout 3000000(单位微秒,对应5分钟)无流超时自动退出,添加-max_muxing_queue_size 1024避免复用队列溢出卡死。
  • 清理冗余参数
    原命令中-segment_time 2和-hls_time 2重复,HLS格式下只用保留-hls_time 2即可。

优化后完整命令

ffmpeg -xerror -loglevel error -stimeout 1111111 -timeout 3000000 -rtsp_transport tcp -rtbufsize 10M -use_wallclock_as_timestamps 1 -hwaccel auto -i "rtsp://admin:admin1234@10.8.0.14:81/cam/realmonitor?channel=1&subtype=1" -vcodec libx264 -preset superfast -crf 28 -sc_threshold 0 -g 50 -r 25 -fflags +discardcorrupt -max_muxing_queue_size 1024 -f hls -hls_flags delete_segments -hls_time 2 -hls_list_size 2 C:\Apache24\htdocs\ipcam\video_1\stream.m3u8

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 01:54:01