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

本文关键字:传输 视频 | 更新日期: 2023-09-27 18:05:49

我有一些事件,我得到了摄像头的位图。

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

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#中流式传输视频帧

也许您可以从将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如果数据足够小,速度不是一个要求)发送这些帧和解码,在那里你可以创建一个视频。

但是可能已经有一些为视频流创建的库,你不必自己编写。