Я пишу приложение WPF, где я должен показать канал Веб-камеры. Я смог сделать этот easly с платформой AForge. Но когда я изменился с компьютера на другой компьютер, тот же код не работает тот же путь.
В первом канал веб-камеры работает отлично, но в другом это не происходит, канал имеет много задержки, и приложение не работает правильно.
Вот код:
private void video_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
Bitmap img = (Bitmap)eventArgs.Frame.Clone();
this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Render, (SendOrPostCallback)delegate
{
IntPtr hBitmap = img.GetHbitmap();
System.Windows.Media.Imaging.BitmapSource bitmapSource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
hBitmap,
IntPtr.Zero,
Int32Rect.Empty,
System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
DeleteObject(hBitmap);
img.Dispose();
GC.Collect();
image1.Source = bitmapSource;
}, null);
}
Что этот код действительно прост, это получает new_frame от веб-камеры в форме a Bitmap
, и то, что я должен сделать, должно преобразовать его в a BitmapSource
, таким образом, я могу показать во фрейме изображения WPF. Я думаю, что это преобразование является ответственной из путаницы, которая происходит, но я не понимаю, почему это работает в компьютере, и в другом не делает.
Компьютерные спецификации являются почти тем же, процессор является тем же, также системная память.
Моя проблема здесь о производительности, этот код в одном компьютере работает гладко, и канал веб-камеры представлен, как это должно, когда я портирую его на другой ПК, этого не происходит.
В моем WPF MediaKit, у меня есть элемент управления VideoCaptureElement, который визуализирует веб-камеру в WPF. Вы также можете получить доступ к сэмплам, подключившись к событию нового изображения и установив EnableSampleGrabbing на элементе.
.Может быть, веб-камера на другом компьютере Сломанный / неисправен? Или имеет одну из веб-камер, которые не поддерживают API DirectShow, который, я думаю, AFORGE строит.