Как отключить звук затвора камеры программно, он всегда создает звук при съемке, я вызываю метод Dispose из MediaCapture, который делает этот звук. Есть ли способ отключить этот звук?Как удалить MediaCapture без воспроизведения звука затвора
Ниже приведен код инициализации:
private async Task InitializeQrCode(CaptureElement captureElement)
{
string error = null;
try
{
if (mediaCapture == null)
{
mediaCapture = new MediaCapture();
var _deviceInformation = await GetCameraDeviceInfoAsync(Windows.Devices.Enumeration.Panel.Back);
var settings = new MediaCaptureInitializationSettings();
settings.StreamingCaptureMode = StreamingCaptureMode.Video;
settings.PhotoCaptureSource = PhotoCaptureSource.VideoPreview;
settings.AudioDeviceId = "";
if (_deviceInformation != null)
settings.VideoDeviceId = _deviceInformation.Id;
await mediaCapture.InitializeAsync(settings);
var maxResolution = mediaCapture.VideoDeviceController.GetAvailableMediaStreamProperties(MediaStreamType.Photo).Aggregate((i1, i2) => (i1 as VideoEncodingProperties).Width > (i2 as VideoEncodingProperties).Width ? i1 : i2);
await mediaCapture.VideoDeviceController.SetMediaStreamPropertiesAsync(MediaStreamType.Photo, maxResolution);
if (mediaCapture.VideoDeviceController.FocusControl.FocusChangedSupported)
{
var focusSettings = new FocusSettings();
focusSettings.AutoFocusRange = AutoFocusRange.FullRange;
focusSettings.Mode = FocusMode.Auto;
focusSettings.WaitForFocus = true;
focusSettings.DisableDriverFallback = false;
mediaCapture.VideoDeviceController.FocusControl.Configure(focusSettings);
}
await mediaCapture.VideoDeviceController.ExposureControl.SetAutoAsync(true);
mediaCapture.SetPreviewRotation(VideoRotation.Clockwise90Degrees);
mediaCapture.SetRecordRotation(VideoRotation.Clockwise90Degrees);
}
captureElement.Source = mediaCapture;
await mediaCapture.StartPreviewAsync();
}
catch (Exception ex)
{
DialogBox.ShowOkMessage(this, "Error:" + ex.Message);
}
}
А вот код для захвата изображения, на CapturePhotoToStreamAsync звук затвора становится сыграна:
var stream = new InMemoryRandomAccessStream();
await mediaCapture.CapturePhotoToStreamAsync(imgProp, stream);
stream.Seek(0);
var wbm = new WriteableBitmap(WPAppConstants.Dimension.ImageEncodingWidth, WPAppConstants.Dimension.ImageEncodingHeight);
await wbm.SetSourceAsync(stream);
var result = bcReader.Decode(wbm);
if (result != null)
{
var torch = mediaCapture.VideoDeviceController.TorchControl;
if (torch.Supported) torch.Enabled = false;
await StopQrCodeScan();
var resultEvent = Result;
if (resultEvent != null)
{
resultEvent(null, new CameraClickedEventArgs { EncodedData = result.Text });
}
}
Demo Project Onedrive Link
Вызов Dispose на MediaCapture не приведет к срабатыванию звука затвора при нормальных условиях. Вы должны опубликовать самый маленький фрагмент кода, который показывает эти симптомы, и мы сможем помочь вам намного лучше. – Mike