Поделиться через


Настройка параметров камеры и микрофона (HTML)

[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. В случае разработки приложений для Windows 10 см. раздел последняя документация]

Вы можете настроить следующие параметры: яркость, контрастность, фокусное расстояние для камеры или громкость звука для микрофона. В API Windows.Media.Capture для этого необходимо получить объект Windows.Media.Devices.VideoDeviceController или Windows.Media.Devices.AudioDeviceController и настроить параметры этого объекта.

Необходимые условия

  • Вы должны быть знакомы с языком JavaScript.
  • К вашему компьютеру должна быть подключена камера.

Инструкции

Этап 1: Получение объекта контроллера видео- или звукового устройства

Объект Windows.Media.Capture.MediaCapture имеет свойства VideoDeviceController и AudioDeviceController, позволяющие получить объекты Windows.Media.Devices.VideoDeviceController или Windows.Media.Devices.AudioDeviceController, с помощью которых производится настройка параметров видео- или звукового устройства.

// Create the media capture object.
    var oMediaCapture = new Windows.Media.Capture.MediaCapture();
    oMediaCapture.initializeAsync();
    
// Retrieve a video device controller.
var videoDeviceController = oMediaCapture.videoDeviceController;

// Retrieve an audio device controller.
var audioDeviceController = oMediaCapture.audioDeviceController;

Этап 2: Установка свойств объекта контроллера видеоустройства

Свойство VideoDeviceController возвращает объект Windows.Media.Devices.VideoDeviceController. Свойства этого объекта — яркость, контрастность и фокусное расстояние — возвращают объект MediaDeviceControl, имеющий свойство Capabilities. Это свойство возвращает объект MediaDeviceControlCapabilities. Объект MediaDeviceControlCapabilities имеет свойства и методы, с помощью которых можно: определить, поддерживается ли то или иное свойство для данной камеры; узнать максимальное и минимальное значения этого свойства; получить и задать значение свойства.

В следующем примере показано, как получить объект MediaDeviceControlCapabilities (обозначен как переменная brightnessCapabilities) для регулировки яркости видеокамеры и с его помощью повысить уровень яркости.

// Retrieve the brightness capabilites of the video camera
var brightnessCapabilities = videoDeviceController.brightness.capabilities; 

//
// Determine if the video camera supports adjustment of the brightness setting.
//
if (brightnessCapabilities.supported)
{
  var brightness;

  //
  // Retrieve the current brightness value.
  //

  if (videoDeviceController.brightness.tryGetValue( brightness ))
  {
    //
    // Get the minimum, maximum and step size for the brightness value. 
    // 
    var min = brightnessCapabilities.min;
    var max = brightnessCapabilities.max;
    var step = brightnessCapabilities.step;
  
    //
    // Increase the brightness value by one step as long as the new value is less than or equal to the maximum.
    //

    if( (brightness + step) <= max )
    {
       if( brightnessCapabilities.trySetValue( brightness + step ) )
       {
         // The brightness was successfully increased by one step.
       }
       else
       {
         // The brightness value couldn't be increased.
       }
    }
    else
    {
       // The brightness value is greater than the maximum.
    }
  }
  else
  {
    // The brightness value couldn't be retrieved.
  }
}
else
{
  // Setting the brightness value is not supported on this camera.
}

Этап 3: Установка свойств объекта контроллера звукового устройства

Свойство AudioDeviceController возвращает объект Windows.Media.Devices.AudioDeviceController. Свойства этого объекта Muted и VolumePercent используются для непосредственной настройки параметров микрофона.

В следующем примере показано, как с помощью объекта AudioDeviceController выключить и включить микрофон, а также повысить его чувствительность.

// Mute the microphone.
audioDeviceController.muted = true;

// Un-mute the microphone.
audioDeviceController.muted = false;

// Get the current volume setting.
var currentVolume = audioDeviceController.volumePercent;

// Increase the volume by 10 percent, if possible.
if (currentVolume <= 90) {
    audioDeviceController.volumePercent = (currentVolume + 10);
}

Этап 4: Полный пример

В следующем примере показано, как настроить параметры камеры и микрофона при захвате видео в файл. Исходной точкой данного примера является функция StartMediaCaptureSession. Она вызывает функцию SetDevices, в которой производится настройка яркости камеры и чувствительности микрофона перед сеансом захвата. Пример создания сеанса захвата см. в разделе Краткое руководство: захват видео с использованием API MediaCapture.

//
// Initialize MediaCapture global object   
//
var oMediaCapture;

function startMediaCaptureSession() {
    oMediaCapture = new Windows.Media.Capture.MediaCapture();
    oMediaCapture.initializeAsync().then (function (result) {
        // Set the audio and video.
        setDevices();
    }, errorHandler);   
}

function setDevices()
{
      
     //
     // Obtain Video and Audio device controllers. 
     //
     var videoDeviceController = oMediaCapture.videoDeviceController;
     var audioDeviceController = oMediaCapture.audioDeviceController;

     //
     // Adjust Video and Audio device settings. 
     //

     //
     // Increase the brightness value by one step as long as the new value is less than or equal to the maximum.
     //
     var brightness;
     var brightnessCapabilities = videoDeviceController.brightness.capabilities;

     brightness = videoDeviceController.brightness.tryGetValue();
               
     if( (brightness.value + brightnessCapabilities.step) <= brightnessCapabilities.max )
     {
         if (videoDeviceController.brightness.trySetValue(brightness + brightnessCapabilities.step))
         {
             // The brightness value was successfully increased by one step.             
         }
         else
         {
             // The brightness value could not be increased.             
         }
     }
     else
     {
         // The new brightness value would be greater than the maximum value.        
     }
           

     //
     // Increase the microphone volume by 10 percent if possible.
     //
     var increase = 10;
     var currentVolume = audioDeviceController.volumePercent;
     if (currentVolume + increase <= 100) {
         audioDeviceController.volumePercent += increase;
     }
}

Примечания

Кроме того, можно вызвать диалоговое окно настройки параметров камеры, вызвав метод Windows.Media.Capture.CameraOptionsUI.Show и передав ему в качестве параметра объект MediaCapture.