如何在C#中流式传输视频帧

时间:2016-09-05 19:29:20

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

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

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

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 ?
}

1 个答案:

答案 0 :(得分:1)

也许你可以从将BitmapImage转换为" stremeable"数据类型。

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,如果数据足够小,速度不是必须的)发送这些帧并解码它们,你可以在那里创建一个视频。

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