0

Я потратил более месяца на поиски решения о том, как передавать поток живой камеры из приложения метро на сервер публикации, который я реализовал в виде веб-сокета ashx обработчик. По-видимому, все ресурсы, которые я нашел в Интернете, говорят о том, что я не могу получить доступ к кадрам в реальном времени с помощью C#, было сказано, что этого можно добиться только с помощью родного C++.Как осуществлять поток живых камер для приложений метро C#

Я написал хак, чтобы переопределить класс WriteAsync класса IRandmomAccessStream в пространстве имен Windows.Storage.Streams. Я считаю, что этот метод вызывается каждый раз, когда новая запись байтов должна записываться с камеры записи в буфер потока. Я перепробовал этот метод записи, чтобы отправить эту последовательность байтов на созданный вручную сервер веб-сокетов, который работал нормально, но видео всегда искажалось на принимающей стороне.

Я считаю, что это связано с отсутствием метаданных/фрагментированных кадров, поскольку поток находится в h.264. Я хочу спросить, есть ли у кого-нибудь идея библиотеки, которая может перекодировать канал камеры в режиме реального времени для прямой трансляции в чистом C#.

ответ

4

вы можете использовать API MediaCapture https://msdn.microsoft.com/en-us/library/windows/apps/mt280228.aspx

var properties = _mediaCapture.VideoDeviceController.GetMediaStreamProperties(MediaStreamType.VideoPreview) as VideoEncodingProperties; 
var frame = new VideoFrame(BitmapPixelFormat.Bgra8, (int)properties.Width, (int)properties.Height); 
var previewFrame = await _mediaCapture.GetPreviewFrameAsync(frame); 
var previewBitmap = frame.SoftwareBitmap; 
frame.Dispose(); 
frame = null; 
+0

ли подходит это решение ваших потребностей? – danvy

+0

Спасибо, это могло заставить меня начать – Adedayo

 Смежные вопросы

  • Нет связанных вопросов^_^