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

SRS服务器DVR录制WebRTC生成MP4文件时长异常求助

SRS DVR录制WebRTC到MP4仅录制数秒的解决建议
  • 检查DVR核心配置
    确认srs.conf中的DVR参数是否正确设置:

    • 确保dvr_path指向的目录有读写权限,避免因权限不足导致录制提前终止
    • 检查dvr_duration是否被误设为极小值(比如1秒),该参数控制分片录制的时长,默认应为3600秒
    • 开启dvr_wait_keyframe,让SRS等待第一个关键帧再启动录制,避免因无有效帧触发提前结束
      参考配置片段:
    dvr {
        enabled on;
        dvr_path ./objs/nginx/html/[app]/[stream].[timestamp].mp4;
        dvr_duration 3600;
        dvr_wait_keyframe on;
    }
    
  • 排查WebRTC关键帧发送问题
    WebRTC流若关键帧间隔过大或初始关键帧延迟,会导致DVR因等待超时提前结束录制:

    • 推流端设置定期发送关键帧(建议每2-5秒一次)
    • 用ffprobe工具分析流的关键帧间隔,确认关键帧生成正常
  • 优化WebRTC流稳定性
    UDP协议的WebRTC易受网络波动影响,流中断或丢包会触发DVR分片:

    • 检查服务器网络状态,排除丢包、高延迟问题
    • 在SRS配置中增大UDP接收缓冲区,减少丢包:
      webrtc {
          enabled on;
          webrtc_udp_buffer_size 2097152;
      }
      
    • 推流端监控WebRTC连接状态,避免频繁断开重连
  • 验证SRS版本兼容性
    部分旧版SRS存在WebRTC转MP4的DVR逻辑bug,建议升级到最新稳定版(如5.x系列),或确认当前版本是否有相关修复补丁

  • 通过日志定位问题
    开启SRS的trace级日志,查看录制过程中的关键信息:

    • 关键帧检测日志(如dvr: wait keyframe)
    • 流断开或暂停的触发日志(如client disconnect)
    • DVR文件结束的原因(如dvr: finish file)
      日志默认路径为./objs/srs.log,可精准定位是流问题还是配置/逻辑问题
  • 交叉验证RTMP推流
    先用RTMP推流测试DVR功能,若RTMP录制正常,说明问题集中在WebRTC处理环节;若RTMP也异常,则排查DVR通用配置或服务器环境

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 21:32:41