簡體   English   中英

如何在C#中流式傳輸視頻幀

[英]How to stream video frames in C#

我有一些事件正在獲取網絡攝像頭的位圖。

如何以最簡單的方式將其流式傳輸到某些本地端口?

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

也許您可以首先將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)發送此幀並對其進行解碼,然后可以在其中創建視頻。

但是可能已經為視頻流創建了一些庫,您不必自己編寫代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM