首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将无限的IP摄像头流保存到文件

将无限的IP摄像头流保存到文件
EN

Stack Overflow用户
提问于 2012-10-01 19:42:22
回答 1查看 3.3K关注 0票数 0

我正在做一个网络项目,其中用户必须能够记录视频,使用IP摄像机(Mobotix摄像机)。我想出了几个想法,但都没有真正起作用。因为我不能在客户端PC上安装任何软件,所以我想到了将录音保存在服务器上的想法。因此,用户在浏览器中打开一个页面,在请求中,服务器打开对摄像头的请求(使用摄像头通过HTTP:http:///cgi-bin/faststream.jpg?stream=full&fps=1.0提供的内置流),并使用以下代码将流保存到服务器:

代码语言:javascript
复制
   public ActionResult Index()
   {

        WebClient webClient = new WebClient();
        webClient.Credentials = new NetworkCredential("Username", "Password");

        var url = "http://<ip-camera>/cgi-bin/faststream.jpg?params";

        // Download the file and write it to disk
        using (Stream webStream = webClient.OpenRead(url))
        using (FileStream fileStream = new FileStream(outputFile, FileMode.Create))
        {
            var buffer = new byte[32768];
            int bytesRead;
            Int64 bytesReadComplete = 0;  // Use Int64 for files larger than 2 gb

            // Get the size of the file to download
            Int64 bytesTotal = Convert.ToInt64(webClient.ResponseHeaders["Content-Length"]);

            // Download file in chunks
            while ((bytesRead = webStream.Read(buffer, 0, buffer.Length)) > 0)
            {
                bytesReadComplete += bytesRead;
                fileStream.Write(buffer, 0, bytesRead);                    
            }

        }
 }

因为来自摄像头的流是无穷无尽的,所以请求也是如此。当用户停止请求时,录制也应该停止。

上面的设置可以正常工作,但也存在一些问题。似乎流首先存储在服务器的内存中,只有在请求停止后才会保存。我认为这会给大视频带来问题。有没有办法立即保存视频?

此外,似乎存在一个问题,即用户停止请求,但服务器继续录制视频。有没有办法确保请求停止?

我知道这个解决方案远非理想。我到处寻找最好的解决方案,但到目前为止还没能找到。我只希望我能把这事办好。不管怎样,谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-01 21:22:04

该请求正在服务器中同步处理。这意味着处理请求的web服务器线程将发出另一个获取视频流的请求(使用web客户端),并将在读取视频流的同时保持运行。即使用户取消了请求,web服务器线程仍将继续运行。

我会将录制功能与表示层(网页)分开。我会使用Windows服务来处理流,并使用网页来向windows服务发送录制命令。您可以使用一个队列来存储命令(db表、windows azure队列等),从而轻松地实现网页和windows服务之间的通信。

Windows服务将在循环中读取队列(在单独的线程上),并向处理流的线程发出信号,以便它可以停止记录。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12672589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档