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.