代码之家  ›  专栏  ›  技术社区  ›  Adalcar

从Basler摄像头抓取循环生成视频流

  •  1
  • Adalcar  · 技术社区  · 7 年前

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

    我需要从Basler GiGE摄像机中获取流,并将其显示在web容器中。

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

    在我的电脑上,我可以很容易地在图像窗口中显示,但我需要做什么才能在ASP。NET web应用程序?

    编辑

    我不是在寻找代码,而是更多的指导原则,如果有人能够解释视频流是如何工作的,那也可以

    2 回复  |  直到 7 年前
        1
  •  1
  •   Mick    7 年前

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

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

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

    在一个网页上,你需要一个HTNML5播放器,它可以理解这个流协议——同样有很多例子,比如免费软件Shaka和Dash。js玩家。将它们集成到网页中非常简单。

    您可以在Netflix和YouTube等服务上观察到这些情况,这些服务通常以较低的比特率启动,以确保快速启动,然后“逐步”提高到更高的比特率,直到达到当前网络条件和设备的最佳比特率。有关在观看YouTube时如何查看此图的信息,请参见此处,例如:

    例如,如果你的图像流是每30秒一个,那么正如Nisus所说,可能同样容易在你的网页中简单地显示图像,并让网页或应用程序每30秒轮询服务器(在你的情况下使用ASP.NET AJAX)下载新图像。

        2
  •  0
  •   Nisus    7 年前