使用Expression.Encoder和网络摄像头的黑色预览屏幕

时间:2013-08-02 23:48:01

标签: c#-4.0 webcam expression-encoder-sdk

我使用Expression.Encoder在Logitech网络摄像头上编写了一些C#代码接口。代码非常容易设置,并且在我的机器和我的测试仪器上运行得很漂亮。不幸的是,在现场,相机的预览屏幕显示黑屏。我已经确认相机会在Logitech的应用程序和MS的Expression应用程序中显示一个Feed。安装了Windows Media Player和DirectX 11。问题似乎是在预览窗口创建中有人不工作。

// create the camera feed with just a video
currentJob = new LiveJob();
currentDeviceSource = currentJob.AddDeviceSource(currentVideoDevice, null);

System.Drawing.Size size = new System.Drawing.Size(250, 275);
currentDeviceSource.PickBestVideoFormat(size, (long)15);

SourceProperties sp = currentDeviceSource.SourcePropertiesSnapshot();
pnlCameraPreview.Size = new System.Drawing.Size(sp.Size.Width, sp.Size.Height);

currentJob.OutputFormat.VideoProfile.Size = new System.Drawing.Size(sp.Size.Width, sp.Size.Height);

// attach to the preview panel
currentDeviceSource.PreviewWindow = new PreviewWindow(new HandleRef(pnlCameraPreview, hwndPreviewPanel));
currentJob.ActivateSource(currentDeviceSource);

// create the camera feed with just a video currentJob = new LiveJob(); currentDeviceSource = currentJob.AddDeviceSource(currentVideoDevice, null); System.Drawing.Size size = new System.Drawing.Size(250, 275); currentDeviceSource.PickBestVideoFormat(size, (long)15); SourceProperties sp = currentDeviceSource.SourcePropertiesSnapshot(); pnlCameraPreview.Size = new System.Drawing.Size(sp.Size.Width, sp.Size.Height); currentJob.OutputFormat.VideoProfile.Size = new System.Drawing.Size(sp.Size.Width, sp.Size.Height); // attach to the preview panel currentDeviceSource.PreviewWindow = new PreviewWindow(new HandleRef(pnlCameraPreview, hwndPreviewPanel)); currentJob.ActivateSource(currentDeviceSource);

有问题的小组(pnlCameraPreview)是一个托管在wpf内部的Windows窗体面板。任何关于为什么这不起作用的想法将不胜感激!

1 个答案:

答案 0 :(得分:0)

我们在生产中使用该方法。它一直有效,但是当没有安装本机视频卡驱动程序时,可以在新盒子上重现有问题的问题。也许问题的根源在于在面板上绘制视频。 BTW虽然观察到类似于发布的代码的问题,但Skype和Encoder的预览显示网络摄像头图片。

预览面板开始显示图片,并且在安装所有适配器的驱动程序后代码开始正常工作。