MediaCapture Klasse

Definition

Bietet Funktionen zum Erfassen von Fotos, Audio und Videos von einem Aufnahmegerät, z. B. einer Webcam.

public ref class MediaCapture sealed : IClosable
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Standard)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.MTA)]
class MediaCapture final : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Standard)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.MTA)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class MediaCapture final : IClosable
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Standard)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.MTA)]
public sealed class MediaCapture : System.IDisposable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Standard)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.MTA)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class MediaCapture : System.IDisposable
function MediaCapture()
Public NotInheritable Class MediaCapture
Implements IDisposable
Vererbung
Object Platform::Object IInspectable MediaCapture
Attribute
Implementiert

Windows-Anforderungen

Gerätefamilie
Windows 10 (eingeführt in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (eingeführt in v1.0)
App-Funktionen
backgroundMediaRecording microphone webcam

Beispiele

Im folgenden Codebeispiel wird gezeigt, wie Ein MediaCapture-Objekt erstellt und initialisiert wird.

// Create and initialze the MediaCapture object.
public async void InitMediaCapture()
{
    _mediaCapture = null;
    _mediaCapture = new Windows.Media.Capture.MediaCapture();

    // Set the MediaCapture to a variable in App.xaml.cs to handle suspension.
    (App.Current as App).MediaCapture = _mediaCapture;

    await _mediaCapture.InitializeAsync(_captureInitSettings);

    CreateProfile();
}

Informationen zum Behandeln des Anhaltens finden Sie unter Behandeln des Anhaltens von Apps.

<StackPanel Orientation="Horizontal">
    <CaptureElement x:Name="capturePreview" Width="320" Height="240" />
    <Image x:Name="imagePreview" 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));

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

Hinweise

Die MediaCapture-Klasse wird verwendet, um Audio, Video und Bilder von einer Kamera aufzunehmen. Anleitungen zum Anzeigen der Kameravorschau finden Sie unter Anzeigen der Kameravorschau. Informationen zum schnellen Einstieg in die Aufnahme von Fotos, Audio oder Video finden Sie unter Grundlegende Foto-, Video- und Audioaufnahme mit MediaCapture.

Die Seite Kamera ist der Standard Hub für Anleitungen zur Verwendung von MediaCapture in Ihrer App. Zusätzlich zu den grundlegenden Kameraaufgaben enthält diese Seite Links zu Anleitungsartikeln für erweiterte Szenarien, einschließlich:

  • Verwenden der Hardware-Kamerataste auf Geräten mit einem
  • Behandeln der Geräte- und Bildschirmausrichtung
  • Verwenden von Kameraprofilen zum Bestimmen von Gerätefunktionen
  • Festlegen von Format, Auflösung und Bildfrequenz des aufgenommenen Videos
  • Verwenden von AdvancedPhotoCapture zum Aufnehmen von HDR- oder Low-Light-Fotos
  • Verwenden des VideoDeviceControllers für den Zugriff auf manuelle Kamerasteuerungen wie Belichtung, Weißabgleich, Autofokus und Blitz
  • Verwenden von Effekten beim Aufzeichnen von Videos
  • Erfassen von Fotosequenzen
  • Verwenden von MediaFrameReader zum Abrufen eines Framesstreams von einer oder mehreren Kameras, einschließlich RGB-, Infrarot- und Tiefenkameras
  • Abrufen eines Frames aus dem Vorschaudatenstrom

Der Artikel Kamera enthält auch Links zu allen UWP SDK-Beispielen für Die Kamera, z. B. das Beispiel für das Kamera-Starterkit .

Die InitializeAsync-Methode , die das MediaCapture-Objekt initialisiert, muss aufgerufen werden, bevor Sie mit der Vorschau oder Erfassung auf dem Gerät beginnen können. In C#- oder C++-Apps sollte die erste Verwendung des MediaCapture-Objekts zum Aufrufen von InitializeAsync im STA-Thread erfolgen. Aufrufe aus einem MTA-Thread können zu undefiniertem Verhalten führen. InitializeAsync startet eine Zustimmungsaufforderung, um die Berechtigung des Benutzers für die App für den Zugriff auf das Mikrofon oder die Kamera zu erhalten. InitializeAsync sollte über den Standard UI-Thread Ihrer App aufgerufen werden. Apps müssen das Anhalten oder Beenden von Apps verarbeiten, indem Medienerfassungsressourcen ordnungsgemäß bereinigen. Informationen zum ordnungsgemäßen Herunterfahren des MediaCapture-Objekts finden Sie unter Grundlegende Foto-, Video- und Audioaufnahme mit MediaCapture.

Unter Windows sollten Musik- und Medienerfassungs-Apps systemMediaTransportControls.SoundLevel überwachen, um festzustellen, ob die Audiodatenströme in der App stummgeschaltet wurden. Bei Apps, die das MediaCapture-Objekt verwenden, wird die Erfassung automatisch beendet, wenn die Aufnahmedatenströme der App stummgeschaltet sind. Die Aufnahme wird nicht automatisch neu gestartet, wenn die Audiostreams nicht stumm getreten sind, sodass die SoundLevel-Änderungsbenachrichtigung verwendet werden kann, um die Aufnahme neu zu starten. Verwenden Sie das SystemMediaTransportControls.PropertyChanged-Ereignis , um zu bestimmen, wann sich die SoundLevel-Eigenschaft ändert.

Für Windows Phone 8.x-Apps sollten Musik- und Medien-Apps das MediaCapture-Objekt und die zugehörigen Ressourcen im Suspending-Ereignishandler sauber und sie im Resuming-Ereignishandler neu erstellen.

Wenn die MediaCategory-Einstellung in Windows 8.1 Nur-Audio-Apps auf Sonstige festgelegt ist, wird der Modus mit hoher Latenz verwendet. Legen Sie für geringe Latenz die MediaCategory-Einstellung auf Kommunikation fest.

Das Hinzufügen eines Direkten Bearbeitungseffekts für die Media Foundation-Transformation zur Aufzeichnungsvorschau hat keine Auswirkungen auf den Stream.

Windows 8 UWP-Apps, die sowohl die Webcam- als auch die Mikrofonfunktionen deklariert haben, funktionieren in Windows 8.1 nicht, wenn der Benutzer die Datenschutzeinstellungen für Webcam und Mikrofon nicht aktiviert hat.

MediaCapture unterstützt nur die CBR-Codierung mit einem Durchlauf.

Hinweise zu JPEG: JPEG-Typen sind nur Passthrough. Um ein Bild zu erfassen, kann das Bildcodierungsprofil auf Auto festgelegt werden, oder Sie müssen ein Codierungsprofil angeben, das dem nativen Typ entspricht. Um einen Effekt hinzuzufügen, müssen Sie zu einem nicht komprimierten nativen Videomedientyp wie NV12 oder RGB32 wechseln.

Hinweise zu H.264: Wenn der native Typ H.264 ist, können Sie mit einem Videomedientyp aufzeichnen, der mit dem nativen Typ identisch ist. Sie können einem Stream vom nativen H.264-Typ keinen Effekt hinzufügen. Zum Aufzeichnen von Videos kann das Bildcodierungsprofil auf Auto festgelegt werden, oder Sie müssen ein Codierungsprofil angeben, das dem nativen Typ entspricht.

Hinweis

Diese Klasse ist nicht agil, was bedeutet, dass Sie das Threadingmodell und das Marshallingverhalten berücksichtigen müssen. Weitere Informationen finden Sie unter Threading and Marshaling (C++/CX) und Using Windows-Runtime objects in a multithreaded environment (.NET).

Versionsverlauf

Windows-Version SDK-Version Mehrwert
1607 14393 CreateFrameReaderAsync(MediaFrameSource)
1607 14393 CreateFrameReaderAsync(MediaFrameSource,String)
1607 14393 CreateFrameReaderAsync(MediaFrameSource,String,BitmapSize)
1607 14393 FrameSources
1607 14393 PauseRecordWithResultAsync
1607 14393 RemoveEffectAsync
1607 14393 StopRecordWithResultAsync
1703 15063 CaptureDeviceExclusiveControlStatusChanged
1703 15063 CreateMultiSourceFrameReaderAsync
2004 19041 CreateRelativePanelWatcher

Konstruktoren

MediaCapture()

Erstellt eine neue instance des MediaCapture-Objekts.

Eigenschaften

AudioDeviceController

Ruft ein -Objekt ab, das einstellungen für das Mikrofon steuert.

CameraStreamState

Ruft den aktuellen Streamstatus des Kameradatenstroms ab.

FrameSources

Ruft ein schreibgeschütztes Wörterbuch von MediaFrameSource-Objekten ab, das gleichzeitig zum Abrufen von Medienframes verwendet werden kann.

MediaCaptureSettings

Ruft die Konfigurationseinstellungen für das MediaCapture-Objekt ab.

ThermalStatus

Ruft einen Wert ab, der die aktuelle thermische status des Erfassungsgeräts angibt.

VideoDeviceController

Ruft ein -Objekt ab, das Einstellungen für die Videokamera steuert.

Methoden

AddAudioEffectAsync(IAudioEffectDefinition)

Fügt der Aufnahmepipeline einen Audioeffekt hinzu.

AddEffectAsync(MediaStreamType, String, IPropertySet)

Fügt einen Audio- oder Videoeffekt hinzu.

AddVideoEffectAsync(IVideoEffectDefinition, MediaStreamType)

Fügt der Aufnahmepipeline einen Videoeffekt hinzu.

CapturePhotoToStorageFileAsync(ImageEncodingProperties, IStorageFile)

Erfasst ein Foto in einer Speicherdatei.

CapturePhotoToStreamAsync(ImageEncodingProperties, IRandomAccessStream)

Erfasst ein Foto in einem Datenstrom mit zufälligem Zugriff.

ClearEffectsAsync(MediaStreamType)

Entfernt alle Audio- und Videoeffekte aus einem Stream.

Close()

Schließt das Medienaufnahmeobjekt.

CreateFrameReaderAsync(MediaFrameSource)

Erstellt einen MediaFrameReader , der zum Abrufen von Frames aus einer MediaFrameSource verwendet wird.

CreateFrameReaderAsync(MediaFrameSource, String)

Erstellt einen MediaFrameReader , der verwendet wird, um Frames mit dem angegebenen Mediencodierungsuntertyp aus einer MediaFrameSource abzurufen.

CreateFrameReaderAsync(MediaFrameSource, String, BitmapSize)

Erstellt einen MediaFrameReader , der verwendet wird, um Frames mit dem angegebenen Mediencodierungsuntertyp und der angegebenen Größe aus einer MediaFrameSource abzurufen.

CreateMultiSourceFrameReaderAsync(IIterable<MediaFrameSource>)

Erstellt einen MultiSourceMediaFrameReader , der verwendet wird, um zeit korrelierte Frames aus einem oder mehreren MediaFrameSource-Objekten abzurufen.

CreateRelativePanelWatcher(StreamingCaptureMode, DisplayRegion)

Erstellt eine neue instance der MediaCaptureRelativePanelWatcher-Klasse, die den Der bereitgestellten DisplayRegion zugeordneten Bereich überwacht, sodass die App Benachrichtigungen empfängt, wenn sich die relative Position des Bereichs ändert.

Dispose()

Führt anwendungsspezifische Aufgaben durch, die mit der Freigabe, der Zurückgabe oder dem Zurücksetzen von nicht verwalteten Ressourcen zusammenhängen.

FindAllVideoProfiles(String)

Ruft die Liste aller Videoprofile ab, die vom angegebenen Videoaufnahmegerät unterstützt werden.

FindConcurrentProfiles(String)

Ruft die Liste der Videoprofile ab, die vom angegebenen Videoaufnahmegerät unterstützt werden, die verwendet werden können, während ein anderes Profil auf einem anderen Aufnahmegerät verwendet wird.

FindKnownVideoProfiles(String, KnownVideoProfile)

Ruft die Liste aller Videoprofile ab, die vom angegebenen Videoaufnahmegerät unterstützt werden und dem angegebenen KnownVideoProfile-Wert entsprechen.

GetEncoderProperty(MediaStreamType, Guid)

Ruft den Wert einer Codierungseigenschaft ab.

GetPreviewFrameAsync()

Ruft einen Vorschauframe vom Aufnahmegerät ab.

GetPreviewFrameAsync(VideoFrame)

Ruft einen Vorschauframe vom Aufnahmegerät ab, kopiert in das bereitgestellte Zielvideoframe und konvertiert in das Format des Zielframes.

GetPreviewMirroring()

Fragt ab, ob der Videodatenstrom horizontal gespiegelt wird.

GetPreviewRotation()

Ruft die Drehung des Videovorschaustreams ab.

GetRecordRotation()

Ruft die Drehung des aufgezeichneten Videos ab.

InitializeAsync()

Initialisiert das MediaCapture-Objekt unter Verwendung der Standardeinstellungen.

InitializeAsync(MediaCaptureInitializationSettings)

Initialisiert das MediaCapture-Objekt .

IsVideoProfileSupported(String)

Ruft einen booleschen Wert ab, der angibt, ob Videoprofile vom angegebenen Videoaufnahmegerät unterstützt werden.

PauseRecordAsync(MediaCapturePauseBehavior)

Hält einen laufenden Datensatzvorgang an.

PauseRecordWithResultAsync(MediaCapturePauseBehavior)

Hält einen laufenden Mediendatensatzvorgang an und stellt ein MediaCapturePauseResult-Element bereit, mit dem der Benutzer die Kamera beim Fortsetzen der Aufzeichnung auf den letzten erfassten Frame ausrichten kann.

PrepareAdvancedPhotoCaptureAsync(ImageEncodingProperties)

Initialisiert die erweiterte Fotoaufnahme und stellt das AdvancedPhotoCapture-Objekt bereit, das zum Verwalten der Aufzeichnung verwendet wird.

PrepareLowLagPhotoCaptureAsync(ImageEncodingProperties)

Initialisiert die Fotoaufnahme mit geringer Verschlussverzögerung und stellt das LowLagPhotoCapture-Objekt bereit, das zum Verwalten der Aufzeichnung verwendet wird.

PrepareLowLagPhotoSequenceCaptureAsync(ImageEncodingProperties)

Initialisiert die Fotosequenzaufnahme mit geringer Verschlussverzögerung und stellt das LowLagPhotoSequenceCapture-Objekt bereit, das zum Verwalten der Aufzeichnung verwendet wird.

PrepareLowLagRecordToCustomSinkAsync(MediaEncodingProfile, IMediaExtension)

Initialisiert die Aufzeichnung mit geringer Verzögerung mithilfe der angegebenen benutzerdefinierten Senke zum Speichern der Aufzeichnung. Diese Methode stellt das LowLagMediaRecording-Objekt bereit, das zum Verwalten der Erfassung verwendet wird.

PrepareLowLagRecordToCustomSinkAsync(MediaEncodingProfile, String, IPropertySet)

Initialisiert die Aufzeichnung mit geringer Verzögerung mithilfe der angegebenen benutzerdefinierten Senke zum Speichern der Aufzeichnung. Diese Methode stellt das LowLagMediaRecording-Objekt bereit, das zum Verwalten der Aufzeichnung verwendet wird.

PrepareLowLagRecordToStorageFileAsync(MediaEncodingProfile, IStorageFile)

Initialisiert die Aufzeichnung mit geringer Verzögerung mithilfe der angegebenen Datei zum Speichern der Aufzeichnung. Diese Methode stellt das LowLagMediaRecording-Objekt bereit, das zum Verwalten der Aufzeichnung verwendet wird.

PrepareLowLagRecordToStreamAsync(MediaEncodingProfile, IRandomAccessStream)

Initialisiert die Aufzeichnung mit geringer Verzögerung mithilfe des angegebenen Datenstroms für zufälligen Zugriff, um die Aufzeichnung zu speichern. Diese Methode stellt das LowLagMediaRecording-Objekt bereit, das zum Verwalten der Aufzeichnung verwendet wird.

PrepareVariablePhotoSequenceCaptureAsync(ImageEncodingProperties)

Initialisiert die Aufnahme variabler Fotosequenzen und stellt das VariablePhotoSequenceCapture-Objekt bereit, das zum Verwalten der Aufzeichnung verwendet wird.

RemoveEffectAsync(IMediaExtension)

Entfernt den angegebenen Effekt aus der Erfassungspipeline.

ResumeRecordAsync()

Setzt einen angehaltenen Aufzeichnungsvorgang fort.

SetEncoderProperty(MediaStreamType, Guid, Object)

Legt eine Codierungseigenschaft fest.

SetEncodingPropertiesAsync(MediaStreamType, IMediaEncodingProperties, MediaPropertySet)

Legt die Mediencodierungseigenschaften asynchron fest.

SetPreviewMirroring(Boolean)

Aktiviert oder deaktiviert die horizontale Spiegelung des Videovorschaustreams. Dies ist nicht die bevorzugte Methode für die Spiegelung. Weitere Informationen finden Sie weiter unten im Abschnitt "Hinweise".

SetPreviewRotation(VideoRotation)

Dreht den Videovorschaustream.

SetRecordRotation(VideoRotation)

Dreht das aufgezeichnete Video.

StartPreviewAsync()

Startet die Vorschau.

StartPreviewToCustomSinkAsync(MediaEncodingProfile, IMediaExtension)

Beginnt mit dem Senden eines Vorschaudatenstroms an eine benutzerdefinierte Mediensenke mithilfe des angegebenen Codierungsprofils.

StartPreviewToCustomSinkAsync(MediaEncodingProfile, String, IPropertySet)

Beginnt mit dem Senden eines Vorschaudatenstroms an eine benutzerdefinierte Mediensenke unter Verwendung des angegebenen Codierungsprofils und der angegebenen Senkeneinstellungen.

StartRecordToCustomSinkAsync(MediaEncodingProfile, IMediaExtension)

Starten Sie die Aufzeichnung in einer benutzerdefinierten Mediensenke mithilfe des angegebenen Codierungsprofils.

StartRecordToCustomSinkAsync(MediaEncodingProfile, String, IPropertySet)

Starten Sie die Aufzeichnung in einer benutzerdefinierten Mediensenke mithilfe des angegebenen Codierungsprofils und der angegebenen Senkeneinstellungen.

StartRecordToStorageFileAsync(MediaEncodingProfile, IStorageFile)

Startet die asynchrone Aufzeichnung in einer Speicherdatei.

StartRecordToStreamAsync(MediaEncodingProfile, IRandomAccessStream)

Beginnt mit der Aufzeichnung in einem Datenstrom mit zufälligem Zugriff.

StopPreviewAsync()

Beendet die Vorschau.

StopRecordAsync()

Beendet die Aufzeichnung.

StopRecordWithResultAsync()

Beendet die Medienaufzeichnung asynchron und stellt ein MediaCaptureStopResult bereit, das verwendet werden kann, um dem Benutzer beim Neustarten der Aufzeichnung die Ausrichtung der Kamera am letzten erfassten Frame zu erleichtern.

Ereignisse

CameraStreamStateChanged

Tritt auf, wenn sich der Zustand des Kamerastreams ändert.

CaptureDeviceExclusiveControlStatusChanged

Tritt auf, wenn sich das exklusive Steuerelement status des Erfassungsgeräts ändert.

Failed

Wird ausgelöst, wenn während der Medienerfassung ein Fehler auftritt.

FocusChanged

Tritt auf, wenn das Aufnahmegerät den Fokus ändert.

PhotoConfirmationCaptured

Tritt auf, wenn ein Fotobestätigungsrahmen aufgenommen wird.

RecordLimitationExceeded

Tritt auf, wenn das Datensatzlimit überschritten wird.

ThermalStatusChanged

Tritt auf, wenn sich die thermische status des Erfassungsgeräts ändert.

Gilt für:

Weitere Informationen