Microsoft Expression Encoder. Скриншот - PullRequest
0 голосов
/ 07 марта 2011

Я заметил, что записи экрана Exression Encoder 4 иногда короче, чем указано.Например, 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));

1 Ответ

0 голосов
/ 15 марта 2011

Не уверен насчет способа решения вашей проблемы, но хотел бы дать вам некоторую информацию о проблеме со звуком. На этих двух машинах я протестировал свое приложение, снимок экрана и звук, и он работал отлично. Исходя из этого, я могу только сделать вывод, что это может быть что-то, связанное с вашим оборудованием или проблемой с вашим кодом ... (может быть, отладка через него?)

Кроме того, ваше решение может быть таким же, как this.

...