【问题标题】:How to stream video frames in C#如何在 C# 中流式传输视频帧
【发布时间】:2016-09-05 19:29:19
【问题描述】:

我有一些事件,我正在获取网络摄像头的位图。

如何以最简单的方式将其流式传输到某个本地端口?

using WpfMultimedia;
using WpfMultimedia.Webcam;

var _webCam = new VideoCapture(DeviceManager.GetVideoInputDevices().First(), null);
_webCam.CaptureFrame += OnFrameCaptured;
_webCam.Start();

...

private void OnFrameCaptured(object sender, CaptureFrameEventArgs e)
{
    //latest BitmapImage from camera is in e.Frame
    BitmapImage _currentFrame = e.Frame
    .... Stream it to http://localhost:9797 ?
}

【问题讨论】:

    标签: c# .net video-streaming webcam bitmapimage


    【解决方案1】:

    也许您可以先将BitmapImage 转换为“可重复”类型的数据。

    byte[] Data;
    JpegBitmapEncoder Encoder = new JpegBitmapEncoder();
    encoder.Frames.Add(BitmapFrame.Create(bitmapImage));
    using(MemoryStream MemStream = new MemoryStream())
    {
    Encoder.Save(ms);
    Data = MemStream.ToArray();
    }
    

    也许您可以使用不同的编码器来提高性能。

    然后你应该使用UDP(如果数据足够小,并且对速度没有要求,则使用TCP)发送这些帧并对其进行解码,在那里你可以创建一个视频。

    但可能已经为视频流创建了一些库,您不必自己编写代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-27
      • 2013-01-25
      • 1970-01-01
      • 2017-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-22
      相关资源
      最近更新 更多