Skip to main content
MediaCapture Class

Proporciona la funcionalidad para capturar fotos, audio y vídeos desde un dispositivo de captura, como una cámara web.

Sintaxis


var mediaCapture = new Windows.Media.Capture.MediaCapture();

public sealed class MediaCapture : IDisposable

Public NotInheritable Class MediaCapture
    Implements IDisposable

public ref class MediaCapture sealed : IClosable

Atributos

[ DualApiPartition()]
[ MarshalingBehavior(Standard)]
[ Threading(MTA)]
[ Version(0x06020000)]

Members

A continuación se indican los tipos de miembros de MediaCapture (Clase):

Constructores

A continuación se indican los constructores de MediaCapture (Clase).

ConstructorDescripción
MediaCapture Creates a new instance of the MediaCapture object.

 

Eventos

A continuación se indican los eventos de MediaCapture (Clase).

EventoDescripción
Failed Raised when an error occurs during media capture.
RecordLimitationExceeded Occurs when the record limit is exceeded.

 

Métodos

The MediaCapture Clase tiene estos métodos. Con C#, Visual Basic y C++, también hereda métodos de Object Clase.

MétodoDescripción
AddEffectAsync Adds an audio or video effect.
CapturePhotoToStorageFileAsync Captures a photo to a storage file.
CapturePhotoToStreamAsync Captures a photo to a random-access stream.
ClearEffectsAsync Removes all audio and video effects from a stream.
Close [C++, JavaScript]Closes the media capture object.
Dispose [C#, VB]Performs tasks associated with freeing, releasing, or resetting unmanaged resources.
GetEncoderProperty Gets the value of an encoding property.
GetPreviewMirroring Queries whether the video stream is mirrored horizontally.
GetPreviewRotation Gets the rotation of the video preview stream.
GetRecordRotation Gets the rotation of the recorded video.
InitializeAsync() Initializes the MediaCapture object, using default settings.
InitializeAsync(MediaCaptureInitializationSettings) Initializes the MediaCapture object.
PrepareLowLagPhotoCaptureAsync Initializes the low shutter lag photo capture and provides the LowLagPhotoCapture object used to manage the recording.
PrepareLowLagPhotoSequenceCaptureAsync Initializes the low shutter lag photo sequence capture and provides the LowLagPhotoSequenceCapture object used to manage the recording.
PrepareLowLagRecordToCustomSinkAsync(MediaEncodingProfile, IMediaExtension) Initializes the low lag recording using the specified custom sink to store the recording. This method provides the LowLagMediaRecording object used to managed the capture.
PrepareLowLagRecordToCustomSinkAsync(MediaEncodingProfile, String, IPropertySet) Initializes the low lag recording using the specified custom sink to store the recording. This method provides the LowLagMediaRecording object used to managed the recording.
PrepareLowLagRecordToStorageFileAsync Initializes the low lag recording using the specified file to store the recording. This method provides the LowLagMediaRecording object used to managed the recording.
PrepareLowLagRecordToStreamAsync Initializes the low lag recording using the specified random-access stream to store the recording. This method provides the LowLagMediaRecording object used to managed the recording.
SetEncoderProperty Sets an encoding property.
SetEncodingPropertiesAsync Asynchronously sets the media encoding properties.
SetPreviewMirroring Enables or disables horizontal mirroring of the video preview stream.
SetPreviewRotation Rotates the video preview stream.
SetRecordRotation Rotates the recorded video.
StartPreviewAsync Starts preview.
StartPreviewToCustomSinkAsync(MediaEncodingProfile, IMediaExtension) Starts sending a preview stream to a custom media sink using the specified encoding profile.
StartPreviewToCustomSinkAsync(MediaEncodingProfile, String, IPropertySet) Starts sending a preview stream to a custom media sink using the specified encoding profile and sink settings.
StartRecordToCustomSinkAsync(MediaEncodingProfile, IMediaExtension) Start recording to a custom media sink using the specified encoding profile.
StartRecordToCustomSinkAsync(MediaEncodingProfile, String, IPropertySet) Start recording to a custom media sink using the specified encoding profile and sink settings.
StartRecordToStorageFileAsync Starts recording asynchronously to a storage file.
StartRecordToStreamAsync Starts recording to a random-access stream.
StopPreviewAsync Stops preview.
StopRecordAsync Stops recording.

 

Propiedades

MediaCaptureClase tiene estas propiedades.

PropiedadTipo de accesoDescripción

AudioDeviceController

De sólo lecturaGets an object that controls settings for the microphone.

MediaCaptureSettings

De sólo lecturaGets the configuration settings for the MediaCapture object.

VideoDeviceController

De sólo lecturaGets an object that controls settings for the video camera.

 

Comentarios

La clase MediaCapture se utiliza para capturar audio, vídeo e imágenes con una cámara. Antes de comenzar la captura desde el dispositivo, es necesario llamar al método InitializeAsync, que inicializa el dispositivo de captura.

Utilice PrepareLowLagPhotoSequenceCaptureAsync para configurar el modo de secuencia de fotografías, que toma una secuencia rápida de fotografías. Vea el Ejemplo de captura multimedia para obtener un ejemplo de secuencia de fotografías.

Puede utilizar la propiedad VideoDeviceController para interactuar con el dispositivo de captura. Por ejemplo, puede utilizar las propiedades TorchControl y FlashControl para establecer el LED y el flash en el dispositivo. Otras propiedades del objeto VideoDeviceController son SceneModeControl, RegionsOfInterestControl, FocusControl y IsoSpeedControl. Cada control proporciona una propiedad Supported para determinar si el hardware del dispositivo es compatible con el control.

En C# o aplicaciones C++, el primer uso del objeto MediaCapture para llamar a InitializeAsync debe estar en el subproceso STA. Las llamadas desde un subproceso MTA pueden producir un comportamiento indefinido.

InitializeAsync iniciará una solicitud de consentimiento para obtener el permiso del usuario para que la aplicación tenga acceso al micrófono o a la cámara. Se debe llamar a InitializeAsync desde el subproceso de la interfaz de usuario principal de la aplicación. Para obtener más información, vea Instrucciones para habilitar dispositivos confidenciales.

Si una aplicación está en vista previa y entra en un estado no visible, se debe detener la vista previa. Si la aplicación vuelve a entrar en un estado de visibilidad, será necesario volver a crear el objeto MediaCapture.

Las aplicaciones de captura de música y elementos multimedia deben supervisar SystemMediaTransportControls.SoundLevel para determinar si las secuencias de audio de la aplicación se han Muted. Para las aplicaciones que usan el objeto MediaCapture, la captura se detendrá automáticamente cuando se silencien las secuencias de la aplicación. La captura no se reinicia automáticamente cuando se reactiva el audio de las secuencias de audio, por lo que la notificación de cambios de la propiedad SoundLevel se puede usar para reiniciar la captura. Use el evento SystemMediaTransportControls.PropertyChanged para determinar cuándo cambia la propiedad SoundLevel.

En las aplicaciones de solo audio de Windows 8.1, si el valor de MediaCategory es Other, se usa el modo de alta latencia. Para latencia baja, establezca la configuración de MediaCategory en Communications.

MediaCapture solo admite codificación CBR de un paso.

Notes on JPEG: los tipos JPEG son solo de paso. Para capturar una imagen, el perfil de codificación de imágenes se puede establecer en Auto o necesita especificar un perfil de codificación que coincida con el tipo nativo. Para agregar un efecto, debe cambiar a un tipo multimedia nativo de vídeo sin comprimir, como NV12 o RGB32.

Notes on H.264: si el tipo nativo es H.264, puede grabar utilizando un tipo multimedia de vídeo cuyo tipo sea idéntico al nativo. No puede agregar un efecto a una secuencia de tipos nativos H.264. Para capturar vídeo, el perfil de codificación de imágenes se puede establecer en automático o se debe especificar un perfil de codificación que coincida con el tipo nativo.

Nota  : esta clase no es ágil, lo que significa que debe tener en cuenta su modelo de subprocesos y el comportamiento del cálculo de referencias. Para obtener más información, vea Subprocesos y cálculo de referencias (C++/CX) y Usar objetos de Windows en tiempo de ejecución en un entorno multiproceso (.NET).

Ejemplos

En el ejemplo de código siguiente se muestra cómo crear e inicializar un objeto MediaCapture.


// Create and initialze the MediaCapture object.
function initMediaCapture() {
    oMediaCapture = null;
    oMediaCapture = new Windows.Media.Capture.MediaCapture();
    oMediaCapture.initializeAsync(captureInitSettings).then (function (result) {
       createProfile();
    }, errorHandler);    
}

Este es un ejemplo que muestra cómo obtener una vista previa de una cámara web utilizando un CaptureElement y cómo tomar una foto y mostrarla en un objeto Image. XAML crea una interfaz de usuario sencilla con CaptureElement, Image y algunos objetos Button para interactuar con el elemento MediaCapture. En el código, hay un método para inicializar el objeto MediaCapture, un método para iniciar la vista previa de la cámara asociada al objeto MediaCapture, un método para detener la vista previa y un método para tomar una foto y mostrarla.


<StackPanel Orientation="Horizontal">
    <CaptureElement x:Name="capturePreview" Width="320" Height="240" />
    <Image x:Name="imagePreivew" Stretch="None" Width="320" Height="240" />
</StackPanel>

<StackPanel Orientation="Horizontal">
    <Button Click="InitCamera_Click" Content="Initialize Camera" />
    <Button Click="StartCapturePreview_Click" Content="Start Capture Preview" />
    <Button Click="CapturePhoto_Click" Content="Capture Photo"/>
    <Button Click="StopCapturePreview_Click" Content="Stop Capture Preview" />
</StackPanel>

Windows.Media.Capture.MediaCapture captureManager;

async private void InitCamera_Click(object sender, RoutedEventArgs e)
{
    captureManager = new MediaCapture();
    await captureManager.InitializeAsync();
}

async private void StartCapturePreview_Click(object sender, RoutedEventArgs e)
{
    capturePreview.Source = captureManager;
    await captureManager.StartPreviewAsync();
}

async private void StopCapturePreview_Click(object sender, RoutedEventArgs e)
{
    await captureManager.StopPreviewAsync();
}

async private void CapturePhoto_Click(object sender, RoutedEventArgs e)
{
    ImageEncodingProperties imgFormat = ImageEncodingProperties.CreateJpeg();

    // create storage file in local app storage
    StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(
        "TestPhoto.jpg",
        CreationCollisionOption.GenerateUniqueName);

    // take photo
    await captureManager.CapturePhotoToStorageFileAsync(imgFormat, file);

    // Get photo as a BitmapImage
    BitmapImage bmpImage = new BitmapImage(new Uri(file.Path));

    // imagePreivew is a <Image> object defined in XAML
    imagePreivew.Source = bmpImage;
}

Vea el ejemplo de captura multimedia para obtener un ejemplo de cómo usar la captura multimedia.

Si desea intentar trabajar con captura multimedia y otras características clave de Windows 8, descargue los laboratorios de prácticas para Windows 8. Estos laboratorios proporcionan una introducción modular paso a paso para crear una aplicación de ejemplo de la Tienda Windows en el lenguaje de programación que desee (JavaScript y HTML o C# y XAML).

Requisitos

Cliente mínimo admitido

Windows 8 [Aplicaciones de la Tienda Windows, aplicaciones de escritorio]

Servidor mínimo admitido

Windows Server 2012 [Aplicaciones de la Tienda Windows, aplicaciones de escritorio]

Espacio de nombres

Windows.Media.Capture
Windows::Media::Capture [C++]

Metadatos

Windows.winmd

Capabilities

webcam
microphone

Vea también

Instrucciones para habilitar dispositivos confidenciales
Guías básicas
Agregar contenido multimedia a aplicaciones de la Tienda Windows con C++, C# o Visual Basic
Agregar contenido multimedia a aplicaciones de la Tienda Windows con JavaScript
Ejemplos
Ejemplo de captura multimedia
Ejemplo de interfaz de usuario de captura de cámara
Ejemplo de interfaz de usuario de opciones de cámara
Ejemplo de enumeración de dispositivos
Ejemplo de comunicación en tiempo real
Ejemplo de extensión multimedia
Laboratorios de prácticas para Windows 8
Otros recursos
Formatos de audio y vídeo admitidos

 

 

Microsoft está realizando una encuesta en línea para comprender su opinión del sitio web de. Si decide participar, se le presentará la encuesta en línea cuando abandone el sitio web de.

¿Desea participar?