我一直在尝试在ASP.NET中设置MJPEG流 . 我想从URL检索MJEPG流,并将每个帧发送到每个连接的客户端 . 我能够找到的示例只能从set文件中读取,而不是从URL继续流,并通过MultiStreamContent发送整个文件 . 由于我逐帧检索,我不能这样做 . 我想知道是否可以用ASP.NET MVC做我想做的事情 . 我目前正在使用AForge视频从链接中检索MJPEG流 . 我的控制器类代码:
using System.Net.Http;
using System.Web.Http;
using AForge.Video;
namespace VideoPrototypeMVC.Controllers
{
public class CameraController : ApiController
{
int framecounter = 0;
MJPEGStream stream = new MJPEGStream();
[HttpGet]
public void GetVideoContent()
{
stream.Source = @"http://127.0.0.1:5002/stream";
stream.NewFrame += new NewFrameEventHandler(showFrame);
stream.Start();
MultipartContent content = new MultipartContent();
while (stream.IsRunning)
{
//Continues streaming should be here?
}
}
//Can be used to display of a frame is available
private void showFrame(object sender, NewFrameEventArgs eventArgs)
{
framecounter++;
System.Diagnostics.Debug.WriteLine("New frame event: " + framecounter);
}
//Should be called at the end of the stream
private void stopStream(object sender, ReasonToFinishPlaying reason)
{
System.Diagnostics.Debug.WriteLine("Stop stream");
stream.Stop();
framecounter = 0;
}
}
}
这段代码不是最终的,但我只需要继续流式传输 . 我找到了使用Socket servers的示例,但我想坚持MVC,因为它允许我更容易地设置服务器的其余部分 .
1 回答
为了确保其他人也能管理这个问题 . 我设法结合@Evk(再次感谢你)说,以及我在这里找到的信息:creating my own MJPEG stream .
注意:下面的代码只是原型/概念验证!当我运行这个时,由于StartStream中无休止的循环,我的处理器拍摄到100% . 将努力使这个更基于事件,但我认为下面的代码更容易解释 .