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

如何在C# MVC Razor页面展示VPN连接的IP摄像头直播流?

实现服务器中转IP摄像头流到C# MVC客户端页面

可以实现,核心思路是让服务器作为中间代理,先通过VPN获取摄像头的直播流,再将流转发给无VPN的客户端。以下是两种可行方案:

方案一:MVC Controller直接转发流

适合低并发场景,通过Controller Action拉取摄像头流并输出给客户端:

1. 编写Controller Action

如果摄像头提供HTTP可直接读取的流(比如HTTP-FLV、MP4),可以用HttpClient拉取并返回:

public async Task<IActionResult> ProxyCameraStream()
{
    // 替换为摄像头在VPN内的可访问流地址
    var cameraStreamUrl = "http://192.168.1.100:8080/stream";
    
    using var httpClient = new HttpClient();
    var stream = await httpClient.GetStreamAsync(cameraStreamUrl);
    
    // 根据摄像头流的实际MIME类型设置,比如"video/x-flv"或"video/mp4"
    return new FileStreamResult(stream, "video/x-flv");
}

如果是RTSP流(IP摄像头常用协议),HttpClient无法直接处理,需要用FFmpeg相关库(如FFmpeg.AutoGen)转码为HTTP兼容的格式:

// 示例:用FFmpeg将RTSP转成MP4流输出(需提前安装FFmpeg并引用对应库)
public IActionResult RtspToHttpStream()
{
    var rtspUrl = "rtsp://192.168.1.100:554/main";
    var ffmpegArgs = $"-i {rtspUrl} -c:v libx264 -f mp4 -movflags frag_keyframe+empty_moov pipe:1";
    
    var process = new Process
    {
        StartInfo = new ProcessStartInfo
        {
            FileName = "ffmpeg",
            Arguments = ffmpegArgs,
            UseShellExecute = false,
            RedirectStandardOutput = true,
            CreateNoWindow = true
        }
    };
    process.Start();
    
    return new FileStreamResult(process.StandardOutput.BaseStream, "video/mp4");
}

2. Razor页面展示流

在视图中用<video>标签调用Controller的Action:

<video width="800" height="600" autoplay muted controls>
    <source src="@Url.Action("ProxyCameraStream", "Camera")" type="video/x-flv">
    你的浏览器不支持视频播放
</video>

方案二:部署流媒体服务器中转

适合高并发场景,性能更优:

  • 在服务器上部署FFmpeg+Nginx-RTMP模块,让FFmpeg拉取摄像头的RTSP流,转码为HLS/RTMP流推送到Nginx
  • MVC Razor页面直接引用Nginx提供的HLS地址(如http://your-server/hls/camera.m3u8),用<video>或HLS播放器播放

关键注意事项

  • 资源管理:处理流时要确保Stream、Process等资源正确释放,避免服务器内存泄漏
  • 权限控制:在Controller Action中添加身份验证逻辑,防止未授权用户访问摄像头流
  • 性能优化:高并发场景下,优先选择流媒体服务器方案,避免MVC服务器被流处理占用过多资源
  • 断线重连:添加流断开后的自动重连逻辑,保证直播的连续性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 14:50:28