Développer Réduire

MediaCapture Class

Fournit des fonctionnalités permettant de capturer des photos, du contenu audio et des vidéos à partir d'un périphérique de capture, tel qu'une webcam.

Syntaxe


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

Attributs

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

Membres

MediaCaptureClasse possède ces types de membres :

Constructeurs

MediaCaptureClasse possède ces constructeurs.

ConstructeurDescription
MediaCapture Creates a new instance of the MediaCapture object.

 

Événements

MediaCaptureClasse possède ces événements.

ÉvénementDescription
Failed Raised when an error occurs during media capture.
RecordLimitationExceeded Occurs when the record limit is exceeded.

 

Méthodes

The MediaCapture Classe a les méthodes suivantes. Avec C#, Visual Basic et C++, elle hérite également des méthodes de Object Classe.

MéthodeDescription
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.

 

Propriétés

Le MediaCaptureClasse a les propriétés suivantes.

PropriétéType d'accèsDescription

AudioDeviceController

En lecture seuleGets an object that controls settings for the microphone.

MediaCaptureSettings

En lecture seuleGets the configuration settings for the MediaCapture object.

VideoDeviceController

En lecture seuleGets an object that controls settings for the video camera.

 

Remarques

La classe MediaCapture permet de capturer l'audio, la vidéo et les images d'une caméra. La méthode InitializeAsync, qui initialise le périphérique de capture, doit être appelée pour commencer la capture à partir du périphérique.

Utilisez PrepareLowLagPhotoSequenceCaptureAsync pour installer le mode de séquence photo, qui prend une séquence rapide de photos. Consultez l'Exemple de capture de médias pour obtenir un exemple de l'utilisation de la séquence photo.

Vous pouvez utiliser la propriété VideoDeviceController pour interagir avec le périphérique de capture. Par exemple, vous pouvez utiliser les propriétés TorchControl et FlashControl pour régler la LED et le flash sur le périphérique. D'autres propriétés dans le VideoDeviceController sont SceneModeControl, RegionsOfInterestControl, FocusControl et IsoSpeedControl. Chaque contrôle fournit une propriété Supported pour déterminer si le matériel du périphérique prend en charge le contrôle.

Dans les applications en C# ou C++, la première utilisation de l'objet MediaCapture pour appeler InitializeAsync doit être sur le thread STA. Les appels à partir d'un thread MTA peuvent provoquer un comportement non défini.

InitializeAsync lance une invite d'autorisation afin que l'utilisateur autorise l'application à accéder au microphone ou à la caméra. InitializeAsync doit être appelé à partir du thread d'interface utilisateur principal de votre application. Pour plus d'informations, consultez les Instructions relatives à l'activation des périphériques sensibles.

Si une application affiche un aperçu et qu'elle passe en mode non visible, l'aperçu doit être arrêté. Si l'application repasse en mode visible, MediaCapture doit être recréée.

Les applications de capture de musique et de média doivent surveiller le SystemMediaTransportControls.SoundLevel pour déterminer si les flux audio de l'application ont été définis sur Muted. Pour les applications qui utilisent l'objet MediaCapture, la capture sera automatiquement arrêtée lorsque les flux de capture de l'application seront coupés. La capture n'est pas redémarrée automatiquement lorsque les flux audio sont réactivés. Par conséquent, la notification modifiée SoundLevel peut être utilisée pour redémarrer la capture. Utilisez l'événement SystemMediaTransportControls.PropertyChanged lorsque la propriété SoundLevel change.

Dans les applications Windows 8.1 uniquement audio, si le paramètre MediaCategory a la valeur Other, le mode de latence élevée est utilisé. Pour la faible latence, définissez le paramètre MediaCategory à Communications.

MediaCapture prend en charge uniquement un encodage CBR.

Notes on JPEG: les types JPEG sont uniquement un relais. Pour capturer une image, le profil d'encodage de l'image peut avoir la valeur Auto ou vous devez spécifier un profil d'encodage qui correspond au type natif. Pour ajouter un effet, vous devez basculer vers un type de média vidéo natif non compressé, tel que NV12 ou RGB32.

Notes on H.264: si le type natif est H.264, vous pouvez enregistrer à l'aide d'un média vidéo dont le type est identique au type natif. Vous ne pouvez pas ajouter un effet à un flux de type natif H.264. Pour capturer une vidéo, le profil d'encodage de l'image peut avoir la valeur Auto ou vous devez spécifier un profil d'encodage qui correspond au type natif.

Remarque   : cette classe n'est pas agile, ce qui signifie que vous devez prendre en compte son modèle de thread et son comportement de marshaling. Pour plus d'informations, consultez les rubriques Threads et marshaling (C++/CX) et Utilisation d'objets Windows Runtime dans un environnement multithread (.NET).

Exemples

L'exemple de code suivant montre comment créer et initialiser un objet 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);    
}


Voici un exemple qui indique comment afficher un aperçu d'une webcam à l'aide de CaptureElement et comment prendre une photo et l'afficher dans un objet Image. Le XAML crée une interface utilisateur simple avec un CaptureElement, Image et certains objets Button pour interagir avec l'élément MediaCapture. Dans le code, il existe une méthode pour initialiser l'objet MediaCapture, une méthode pour démarrer la prévisualisation de la caméra branchée à l'objet MediaCapture, une méthode pour arrêter la prévisualisation et une méthode pour prendre une photo et l'afficher.


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


Consultez l'Exemple de capture de médias pour obtenir un exemple de l'utilisation de la capture de médias.

Si vous souhaitez utiliser la capture de média et d'autres fonctionnalités clés de Windows 8, téléchargez les ateliers pratiques pour Windows 8. Ces ateliers fournissent une introduction modulaire et pas à pas pour créer un exemple d'application Windows Store dans le langage de programmation de votre choix (JavaScript et HTML ou C# et langage XAML).

Conditions requises

Client minimal pris en charge

Windows 8 [Applications Windows Store, applications de bureau]

Serveur minimal pris en charge

Windows Server 2012 [Applications Windows Store, applications de bureau]

Espace de noms

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

Métadonnées

Windows.winmd

Capabilities

webcam
microphone

Voir aussi

Instructions relatives à l'activation des périphériques sensibles
Présentations
Ajout d'éléments multimédias dans les applications du Windows Store en C++, C# ou Visual Basic
Ajout d'éléments multimédias dans les applications Windows Store générées à l'aide de JavaScript
Exemples
Exemple de capture de médias
Exemple d'interface utilisateur de capture de la caméra
Exemple d'interface utilisateur d'options de la caméra
Exemple d'énumération de périphérique
Exemple de communication en temps réel
Exemple d'extensions de médias
Ateliers pratiques pour Windows 8
Autres ressources
Formats audio et vidéo pris en charge

 

 

Afficher:
© 2014 Microsoft