我使用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窗体面板。任何关于为什么这不起作用的想法将不胜感激!
答案 0 :(得分:0)
我们在生产中使用该方法。它一直有效,但是当没有安装本机视频卡驱动程序时,可以在新盒子上重现有问题的问题。也许问题的根源在于在面板上绘制视频。 BTW虽然观察到类似于发布的代码的问题,但Skype和Encoder的预览显示网络摄像头图片。
预览面板开始显示图片,并且在安装所有适配器的驱动程序后代码开始正常工作。