Cómo ajustar la configuración de la cámara o el micrófono (HTML)

[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows Runtime. Si estás desarrollando para Windows 10, consulta la documentación más reciente ]

Puedes ajustar varias opciones de configuración de la cámara o el micrófono, como el brillo, contraste, foco (en la cámara) o volumen (en el micrófono). En la API Windows.Media.Capture esto se realiza recuperando un objeto Windows.Media.Devices.VideoDeviceController o Windows.Media.Devices.AudioDeviceController y configurando las propiedades del objeto.

Requisitos previos

  • Deberías estar familiarizado con JavaScript.
  • El equipo que estás usando tiene una cámara.

Instrucciones

Paso 1: Recuperación de un controlador de dispositivos de audio o vídeo

El objeto Windows.Media.Capture.MediaCapture contiene las propiedades VideoDeviceController y AudioDeviceController, que te permiten recuperar un objeto Windows.Media.Devices.VideoDeviceController o Windows.Media.Devices.AudioDeviceController para controlar la configuración de un dispositivo de audio o vídeo.

// 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;

Paso 2: Configuración de las propiedades de un controlador de dispositivos de vídeo

La propiedad VideoDeviceController devuelve un objeto Windows.Media.Devices.VideoDeviceController. Las propiedades de este objeto, como brillo, contraste o foco, devuelven un objeto MediaDeviceControl con una propiedad Capabilities que devuelve un objeto MediaDeviceControlCapabilities. El objeto MediaDeviceControlCapabilities tiene propiedades y métodos que te permiten determinar si una propiedad es compatible con esta cámara y cuáles son los valores mínimos y máximos de la propiedad. Además, te dan la posibilidad de obtener y definir el valor de la propiedad.

En el siguiente ejemplo se recupera un objeto MediaDeviceControlCapabilities denominado brightnessCapabilities para la configuración de brillo de una cámara de vídeo y se lo usa para incrementar el nivel de brillo.

// 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.
}

Paso 3: Configuración de las propiedades de un controlador de dispositivos de audio

La propiedad AudioDeviceController devuelve un objeto Windows.Media.Devices.AudioDeviceController. Puedes usar las propiedades de este objeto, como Muted y VolumePercent, para ajustar directamente la configuración del micrófono.

En el siguiente ejemplo se muestra cómo usar un objeto AudioDeviceController para silenciar y reactivar el audio del micrófono, así como subirle el volumen.

// 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);
}

Paso 4: Ejemplo completo

En el siguiente ejemplo se muestra cómo ajustar la configuración de la cámara y el micrófono al capturar vídeo en un archivo. El punto de entrada de este ejemplo es la función StartMediaCaptureSession. A continuación, esta función llama a la función SetDevices, en la que se ajustan el brillo de la cámara y el volumen del micrófono antes de comenzar la sesión de captura. Para obtener un ejemplo de cómo crear la sesión de captura, consulta Inicio rápido: captura de vídeo con la 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;
     }
}

Observaciones

También puedes abrir un cuadro de diálogo para ajustar la configuración de la cámara mediante una llamada al método Windows.Media.Capture.CameraOptionsUI.Show y pasando un objeto MediaCapture como un parámetro.