Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用owin/katana流式传输运动jpeg?_C#_.net 4.5_Owin_Katana - Fatal编程技术网

C# 如何使用owin/katana流式传输运动jpeg?

C# 如何使用owin/katana流式传输运动jpeg?,c#,.net-4.5,owin,katana,C#,.net 4.5,Owin,Katana,我在windows服务中自托管OWIN/KATANA。现在,我已经实现了一种从相机上抓取单个图像的方法。我想从相机中抓取多个帧,并将它们流回到html页面上的img标记。OWIN/KATANA是否可以这样做 app.Map("/Camera/Video", a => { a.Run(context => { string connectionid = CurrentDevice.Value.ToString(); object ret

我在windows服务中自托管OWIN/KATANA。现在,我已经实现了一种从相机上抓取单个图像的方法。我想从相机中抓取多个帧,并将它们流回到html页面上的img标记。OWIN/KATANA是否可以这样做

app.Map("/Camera/Video", a =>
{
    a.Run(context =>
    {
        string connectionid = CurrentDevice.Value.ToString();
        object ret = DeviceManager.Instance.SendMessageToDevice(connectionid, "startmovie");
        context.Response.Headers.Add("Content-Type", new string[] { "multipart/x-mixed-replace; boundary=--jpgboundary" });

        bool con = true;
        StreamWriter writer = new StreamWriter(context.Response.Body);
        while (con)
        {
            using (MemoryStream ms = new MemoryStream())
            {
                Image img = (Image)DeviceManager.Instance.SendMessageToDevice(connectionid, "capturestill");
                img.Save(ms, ImageFormat.Jpeg);
                byte[] buffer = ms.GetBuffer();

                writer.WriteLine("--jpgboundary");
                writer.WriteLine("Content-Type: image/jpeg");
                writer.WriteLine(string.Format("Content-length: {0}", buffer.Length));
                writer.WriteLine();
                context.Response.Write(buffer);
                //writer.WriteLine(Convert.ToBase64String(buffer));
                writer.Flush();
            }
            Thread.Sleep(200);
        }
        DeviceManager.Instance.SendMessageToDevice(connectionid, "stopmovie");
        return context.Response.WriteAsync("");
    });
});

我知道我的问题是什么。我使用的是WriteAsync,我只需要使用Write。上述方法非常有效。我现在只需要弄清楚如何停止。

你是在问“给定一系列静止帧,如何将其转换为视频?”还是“给定一个视频,如何使用OWIN/KATANA进行流式处理?”我将拍摄一系列静止帧,并将其实时流回到客户端。我有一个摄像头的连接,每秒大概可以拍30帧。是否可以使用OWIN/KATANA将其流式传输回来?您特别提到了标签:标签需要一个视频流,如.MP4。你能从摄像机上看到吗?。这就是我希望能够做到的。我只是注意到它使用了img标签,所以我会使用它。啊,我明白了。但这并没有使用视频标签。它似乎正在发送一系列JPEG文件。有点像这样: