2016-09-05 7 views
0

私はウェブカメラのビットマップを取得しているイベントがあります。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 ? 
} 

答えて

1

たぶん、あなたは、データの「stremeable」型に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のデータが十分に小さく、速度は必須ではない場合)を使用する必要があります。そこにビデオを作成できます。

おそらく、既にビデオストリーミングのために作成されたライブラリがあり、あなた自身でコード化する必要はありません。

関連する問題