2012-08-15 71 views
0

我想建立一个简单的测试例子,使用我的摄像头和输出到WIndowsFormHost。这实际上来自示例代码,但我不确定它为什么不起作用。我的摄像头的LED灯亮起,所以我想这意味着我的摄像头不是问题。微软表达式 - OutputPreviewWindow不工作

任何人都可以帮我解决这个问题吗?这是我的示例代码。

private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
     job = new LiveJob(); 

     deviceSource = job.AddDeviceSource(videoDevs.Count > 0 ? videoDevs[1] : null, audioDevs.Count > 0 ? audioDevs[0] : null); 
     job.ActivateSource(deviceSource); 
     job.ApplyPreset(LivePresets.VC1HighSpeedBroadband16x9); 
     job.StartEncoding(); 
     job.OutputPreviewWindow = new PreviewWindow(new HandleRef(displayPanel, displayPanel.Handle)); 
     //Console.Read(); 
     //job.StopEncoding(); 
    } 

另外,我得到这个奇怪的错误HREF收到COMException说,当我试图把job.StartEncoding()中的一个按钮。任何人都可以告诉我这个错误的含义?

COMException

回答

0

我找到了解决我的问题。

private string Broadcast_Webcam() 
    { 
     if (_job == null) 
     { 
      v_Device = EncoderDevices.FindDevices(EncoderDeviceType.Video); 
      a_Device = EncoderDevices.FindDevices(EncoderDeviceType.Audio); 

      _job = new LiveJob(); 
      _source = _job.AddDeviceSource(v_Device.Count > 0 ? v_Device[1] : null,      a_Device.Count > 0 ? a_Device[0] : null); 
      _job.ActivateSource(_source); 
     } 

     if (_job != null) 
     { 
      _job.ApplyPreset(LivePresets.VC1Broadband4x3); 

      PullBroadcastPublishFormat format = new PullBroadcastPublishFormat(); 
      format.BroadcastPort = 8080; 
      format.MaximumNumberOfConnections = 2; 
      _job.PublishFormats.Add(format); 
      _job.StartEncoding(); 

     } 
     return "Webcam service has been started"; 
    } 

这将工作没有问题。

第二个问题是COMEXCEPTION的一个常量错误。解决它的方法是通过

_job.StopEncoding(); 
_job.Dispose(); 

我忘记在处理它之前停止编码过程,导致异常。