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

OpenCV+FFmpeg推流RTSP服务器:格式报错与卡顿问题求助

问题分析与解决方案

核心问题原因

  1. 初始命令报错“找不到合适的输出格式”:
    FFmpeg无法自动识别RTSP地址对应的输出封装格式,必须显式指定输出格式为rtsp,同时需要补充RTSP推流的必要传输参数。

  2. 修改-f rtsp后卡顿:
    RTSP推流需要实时发送数据包,FFmpeg默认的缓冲机制会导致数据积压进而阻塞程序;另外未指定传输协议(TCP/UDP)可能导致连接不稳定。

修正后的FFmpeg命令

将管道中的FFmpeg命令替换为以下内容:

ffmpeg -f rawvideo -r 30 -video_size 720x1280 -pixel_format bgr24 -i pipe: -vcodec libx264 -crf 24 -pix_fmt yuv420p -f rtsp -rtsp_transport tcp -flush_packets 1 rtsp://10.0.0.6:8554/mystream

参数说明

  • -f rtsp:显式指定输出格式为RTSP,直接解决“找不到输出格式”的问题
  • -rtsp_transport tcp:指定用TCP协议传输RTSP流,比UDP更稳定,避免丢包导致的卡顿
  • -flush_packets 1:强制FFmpeg每处理完一帧就立即刷新输出缓冲区,确保数据实时发送,解决程序卡顿问题

额外优化建议

  • 在循环的fwrite之后添加fflush(pipeout),确保OpenCV生成的帧数据立即写入管道,避免本地缓冲区积压:
    fwrite(frame.data, 1, width * height * 3, pipeout);
    fflush(pipeout); // 新增这一行
    
  • 确认RTSP服务器已正常启动,且地址、端口、流路径(/mystream)配置正确
  • 检查FFmpeg是否支持RTSP输出,可在命令行执行ffmpeg -formats | findstr rtsp(Windows)或ffmpeg -formats | grep rtsp(Linux)验证

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 04:35:19