从Basler相机抓取循环生成视频流

时间:2017-11-09 09:18:35

标签: c# asp.net video camera live-streaming

我是视频流和处理的初学者。

我需要从Basler GiGE相机中取出流并将其显示在Web容器中。

我正在使用Basler.Pylon C#API访问相机并逐个抓取图像。从返回的IGrabResult对象,我可以访问各种参数,如宽度,高度,步幅,当然还有字节缓冲区。

在我的电脑上,我可以在图像窗口中轻松显示它,但是我需要做些什么才能在ASP.NET Web应用程序中显示它?

修改

我不是在寻找代码,而是更多的指导方针,如果有人可以解释视频流的工作原理,那也会有用

2 个答案:

答案 0 :(得分:1)

视频流是非常专业的,一般来说,如果你想通过互联网将高质量的视频流式传输到多个终端,它最容易使用专用的视频流服务器而不是自己构建一个。

专用视频流服务器可以通过托管服务(例如Vimeo)提供,是您安装和运行的商业服务器(例如Wowza)或您安装和运行的免费软件流服务器(例如GStreamer),因此您可以选择

一般规则,流媒体服务器会将您的视频分成多个块,并创建视频的多个比特率副本。这允许客户端使用自适应比特率流(ABR)并按块下载视频块,根据当前设备和网络条件选择下一个块的比特率版本。 HLS和MPEG-DASH是ABR流协议的例子。

在网页上你需要一个可以理解这个流媒体协议的HTNML5播放器 - 再次有许多例子,如免费软件Shaka和Dash.js播放器。将这些集成到网页中非常简单。

您可以在Netflix和YouTube等服务上观察这些内容,这些服务通常会以较低的比特率启动,以确保快速启动,然后再升级'到达更高的比特率,直到达到当前网络条件和设备的最佳比特率。请点击此处查看有关如何在观看YouTube时查看此图表的一些信息,例如:

说完以上所有内容之后,你的案例似乎正在处理静止图像流是没有价值的。虽然所有视频实际上都是静态图像流,但可能是您的图像不经常变化,因此您可能不需要上面的一些技术 - 很多视频流技术都是为了处理从服务器到客户端的每秒30或60个高质量帧的大量数据流。

例如,如果您的图像流是每30秒一个,那么就像Nisus所说的那样,只需在网页中简单地显示图像并让网页或应用程序每30周一次轮询服务器就可以了。秒(在您的情况下使用ASP.NET AJAX)下载新图像。

答案 1 :(得分:0)

您至少有两个选项 - 第一个是每隔几秒生成一系列jpeg图像,并使用标记和简单的javascript代码在客户端上逐个显示它们。第二个选项是生成和流式传输mp4-video并在客户端上显示一些COM-windows媒体播放器或html5控件。