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

大华摄像头开麦后FFmpeg录制RTSP转MP4速度飙至60倍问题咨询

问题根因

该故障由大华IPC-EW5541-AS、IPC-HDBW4231F-AS两款型号的固件RTSP时间戳逻辑缺陷导致:

  • 摄像头开启麦克风后,前2-5分钟RTSP流时间戳保持正常,之后音频流会出现时间戳跳变、时基漂移问题
  • 命令中添加的-an参数仅会丢弃音频流的编码输出,不会阻止FFmpeg在RTSP解复用阶段读取音频流时间戳参与全局时长计算
  • 异常的音频时间戳会污染全局时间基准,导致FFmpeg误判流播放速度(即日志中显示的60x左右speed),segment分片器基于错误时间戳计算时长,原本60秒的分片阈值被误判为1秒左右,触发频繁分片
  • 同品牌IPC-HDW4433C-A型号无该固件缺陷,因此运行正常;麦克风关闭时摄像头不发送音频流,也不会触发问题。
解决方案

按优先级从高到低选择以下可直接落地的方案:

  • 方案1:拉流时直接屏蔽音频流协商(最推荐,零额外开销,不影响并行采音)
    在输入参数前添加-allowed_media_types video,让FFmpeg与摄像头建立RTSP连接时仅请求视频流,从源头上不接收音频RTP包,完全规避音频时间戳干扰。修改后的完整命令如下:
    ffmpeg -rtsp_transport tcp -allowed_media_types video -i 'rtsp://<USER>:<PASSWORD>@<CAMERA_ADDRESS>' -vcodec copy -dn -y -segment_time 60 -strftime 1 -reset_timestamps 1 -f segment %Y-%m-%d-%H-%M.mp4
    
    该方案不影响其他脚本单独发起RTSP连接拉取音频流,不同连接的流协商完全独立。
  • 方案2:强制使用本地接收时间戳替代摄像头流自带时间戳
    若使用的FFmpeg版本过低不支持-allowed_media_types参数,可在输入前添加-use_wallclock_as_timestamps 1,让FFmpeg以本地收到数据包的系统时间作为时间戳,完全忽略摄像头下发的错误时间戳。核心命令如下:
    ffmpeg -rtsp_transport tcp -use_wallclock_as_timestamps 1 -i 'rtsp://<USER>:<PASSWORD>@<CAMERA_ADDRESS>' -vcodec copy -an -dn -y -segment_time 60 -strftime 1 -reset_timestamps 1 -f segment %Y-%m-%d-%H-%M.mp4
    
    该方案存在数百毫秒级的时间误差,适合对时间精度要求不高的场景。
  • 方案3:音视频拉流进程完全隔离
    若需要同时录制音视频,禁止在同一个FFmpeg进程中同时拉取该型号摄像头的音视频流:
    • 第一个进程使用方案1的参数单独拉取视频流,完成60秒分片逻辑
    • 第二个进程单独拉取音频流存储为独立文件
      后续需要合成完整音视频录像时,按录制起始时间对齐合并即可,完全规避音频时间戳污染视频分片逻辑的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:51:19