0

我正在尝试构建一个简单的测试示例,该示例使用我的网络摄像头并输出到 WIndowsFormHost。这实际上取自示例代码,但我不确定为什么它不起作用。我的网络摄像头的 LED 亮起,所以我想这意味着我的网络摄像头没有问题。

谁能帮我解决这个问题?这是我的示例代码。

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();
    }

此外,当我尝试将 job.StartEncoding() 放在按钮中时,我收到了一个奇怪的错误,即 HREF COMException。谁能告诉我这个错误是什么意思?

异常

4

1 回答 1

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();

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

于 2012-08-22T07:48:27.337 回答