0

ExressionEncoder4の画面記録が指定よりも短い場合があることに気づきました。たとえば、5分間の録画では、15秒のビデオしか得られません。これは、ビデオと同時にキャプチャされているオーディオに関連しているようです。当初、私はヘッドセットスピーカーをオーディオプロファイルとして使用していました。録音からキャプチャオーディオを削除すると、問題は解決しました。オーディオプロファイルを標準スピーカーに変更すると、それも停止しました。ただし、録音開始時に音量を急激に変化させることで簡単に再現できます。その結果、記録がフリーズします...記録にはまだ5分かかります。しかし、結果は15秒(またはそれくらい)のビデオになります。

コードスニペットを以下に示します。

        try
        {
            _screenCaptureJob = new ScreenCaptureJob();
            _screenCaptureJob.CaptureRectangle = _screenRectangle;
            _screenCaptureJob.ShowFlashingBoundary = true;
            _screenCaptureJob.ScreenCaptureVideoProfile.FrameRate = 20;
            _screenCaptureJob.CaptureMouseCursor = false;

            _screenCaptureJob.ScreenCaptureCommandFinished += new EventHandler<ScreenCaptureCommandFinishedEventArgs>(_screenCaptureJob_ScreenCaptureCommandFinished);
            _screenCaptureJob.ScreenCaptureFinished += new EventHandler<ScreenCaptureEventArgs>(_screenCaptureJob_ScreenCaptureFinished);

            Collection<EncoderDevice> audioDevices = EncoderDevices.FindDevices(EncoderDeviceType.Audio);
            try
            {
                EncoderDevice foundDevice = audioDevices.First(delegate(EncoderDevice item) { return item.Name.StartsWith(@"Speakers"); });
                _screenCaptureJob.AddAudioDeviceSource(foundDevice);
            }
            catch (Exception ex)
            {
                _appLogger.Error(string.Format("RecordNextSegment. Cannot find prefered audio device using {0} !", audioDevices[0].Name), ex);
                _screenCaptureJob.AddAudioDeviceSource(audioDevices[0]);
            }
            _currentDurationInSeconds = (_recordDurationInSeconds < _maxSegmentDurationInSeconds) ? _recordDurationInSeconds : _maxSegmentDurationInSeconds;

            _screenCaptureJob.Duration = DateTimeUtilities.DurationToTimeSpan(_currentDurationInSeconds);
            _screenCaptureJob.OutputScreenCaptureFileName = string.Format(@"{0}\{1}.wmv", _tvaConfiguration.TVAVideoDirectoryRawVideo, FileNameFromSegment(_segmentNumber ));
             _screenCaptureJob.Start();
            LogInfo(string.Format("Remaining time (seconds): {0}. Current time: {1}. File: {2}", _recordDurationInSeconds, _currentDurationInSeconds, _screenCaptureJob.OutputScreenCaptureFileName));
4

1 に答える 1

0

問題を解決する方法についてはわかりませんが、オーディオの問題について意見を述べたいと思います。2 台のマシンでアプリケーションをテストしたところ、スクリーン キャプチャとオーディオは完全に機能しました。そのため、ハードウェアに関連するものか、コードの問題である可能性があると結論付けることができました...(おそらくそれを介してデバッグしますか?)

また、あなたの解決策はこれと同じかもしれません

于 2011-03-15T17:15:56.183 に答える