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

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가 데이터가 충분히 작고 속도가 필요하지 않은 경우)를 사용해야하며 여기에서 비디오를 만들 수 있습니다.

하지만 비디오 스트리밍을 위해 이미 생성 된 일부 라이브러리가있을 수 있으며 직접 코딩 할 필요가 없습니다.

관련 문제