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

如何通过FFMPEG将MATLAB处理后的单帧推流至RTSP?

实现MATLAB处理后单帧的即时RTSP推流

完全可以实现实时推流处理后的单帧画面,下面是两种实用方案,适配你的MATLAB+FFmpeg场景:

方法一:MATLAB + FFmpeg管道推流(低延迟首选)

这种方式通过管道将MATLAB处理后的帧直接传给FFmpeg编码推流,延迟极低,适合实时场景:

  1. 启动FFmpeg管道进程
    在MATLAB中执行以下代码,初始化FFmpeg的标准输入管道,指定RTSP输出参数:

    % 替换成你的帧分辨率、帧率和RTSP地址
    frameWidth = 1920;
    frameHeight = 1080;
    frameRate = 25;
    rtspUrl = 'rtsp://10.0.0.0:8554/mystream';
    
    ffmpegCmd = sprintf(...
        'ffmpeg -f rawvideo -pix_fmt rgb24 -s %dx%d -r %d -i - -c:v libx264 -preset ultrafast -f rtsp %s',...
        frameWidth, frameHeight, frameRate, rtspUrl);
    
    % 启动FFmpeg进程并打开标准输入管道
    [ffmpegProcess, ~, ~] = system(ffmpegCmd, '-echo', '-stdin');
    

    参数说明:-f rawvideo表示输入为原始像素数据,-pix_fmt rgb24匹配MATLAB的RGB帧格式,-preset ultrafast最大化编码速度、降低延迟。

  2. 逐帧处理并推流
    处理完每一帧后,将帧数据转换成FFmpeg要求的格式,写入管道:

    % 假设processedFrame是你处理后的RGB帧(uint8类型,尺寸为HxWx3)
    % 转成行优先的一维数组,匹配FFmpeg的原始输入格式
    frameData = reshape(permute(processedFrame, [2, 1, 3]), 1, []);
    fwrite(ffmpegProcess, frameData, 'uint8');
    

    如果处理的是灰度帧,将-pix_fmt改为gray,并调整帧数据的维度转换逻辑。

  3. 结束推流时清理进程
    推流完成后,关闭管道并终止FFmpeg进程:

    fclose(ffmpegProcess);
    % Windows系统用taskkill,Linux/macOS替换为system('pkill ffmpeg')
    system('taskkill /f /im ffmpeg.exe');
    

方法二:MATLAB VideoWriter直接推流(简易实现)

MATLAB R2020b及以上版本支持通过VideoWriter直接写入RTSP流,底层依赖FFmpeg,实现更简洁:

  1. 初始化VideoWriter对象

    rtspUrl = 'rtsp://10.0.0.0:8554/mystream';
    vw = VideoWriter(rtspUrl, 'FFmpeg');
    vw.FrameRate = 25; % 设置推流帧率
    vw.VideoCompressor = 'libx264';
    vw.Quality = 50; % 平衡画质和编码速度,值越低速度越快
    open(vw);
    
  2. 循环写入处理后的帧
    在你的帧处理循环中,直接写入处理完成的画面:

    while true
        % 替换成你的帧处理逻辑
        processedFrame = yourFrameProcessingFunction();
        writeVideo(vw, processedFrame);
        % 控制帧率,避免推流速度过快
        pause(1/vw.FrameRate);
    end
    
  3. 关闭推流

    close(vw);
    

关键注意事项

  • 确保FFmpeg已添加到系统环境变量,MATLAB能直接调用ffmpeg命令。
  • 若延迟过高,可尝试降低分辨率、调低画质参数,或添加-tune zerolatency参数进一步优化FFmpeg编码延迟。
  • 测试推流效果时,用VLC播放器打开RTSP地址即可实时查看。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 03:21:13