Я использую класс MediaCapture (Windows.Media.Capture), чтобы добавить некоторые эффекты к входным кадрам веб-камеры. Для применения эффектов я работаю с библиотекой Win2D . После того, как я несколько раз очищаю и повторно применяю эффекты, подобные приведенному ниже, возникает исключение, и веб-камера не работает.
Событие MediaCapture Failed показывает следующие аргументы:
MediaCaptureFailedEventArgs
Code : 2147942414
Message : "Not enough memory resources are available to complete this operation."
Однако счетчик производительности в диспетчере задач показывает достаточный объем памяти для использования.
//Reset Effect Method
private async Task ApplyAllEffects()
{
await ClearAllEffects();
await ApplyRemoveGreenEffect();
}
//Clear All Effects Method
private async Task ClearAllEffects()
{
//_previewMediaCapture is a MediaCapture object
if (_previewMediaCapture == null) return;
await _previewMediaCapture.ClearEffectsAsync(MediaStreamType.VideoPreview);
}
//Add Effect Method
private async Task ApplyRemoveGreenEffect()
{
if (_previewMediaCapture == null) return;
var properties = new PropertySet();
properties[nameof(RemoveGreenMediaExtension.Value)] = (float)Preferences.RemoveGreen;
var definition = new VideoEffectDefinition(typeof(RemoveGreenVideoEffect).FullName, properties);
await _previewMediaCapture.AddVideoEffectAsync(definition, MediaStreamType.VideoPreview);
}
Я проверил программу и код Образец Win2d , предлагаемый MS. У него тоже такая же проблема. Нет способа избежать этой проблемы?