MediaCapture-Klasse
TOC
Inhaltsverzeichnis reduzieren
Inhaltsverzeichnis erweitern

MediaCapture Class

Stellt Funktionen zum Aufzeichnen von Fotos, Audiodaten und Videos von einem Aufnahmegerät, z. B. einer Webcam, bereit.

Syntax


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

Attribute

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

Member

MediaCaptureKlasse hat diese Membertypen:

Konstruktoren

MediaCaptureKlasse hat diese Konstruktoren.

KonstruktorBeschreibung
MediaCapture Creates a new instance of the MediaCapture object.

 

Ereignisse

MediaCaptureKlasse hat diese Ereignisse.

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

 

Methoden

The MediaCapture Klasse hat diese Methoden. Mit C#, Visual Basic und C++ erbt es auch Methoden aus Object Klasse.

MethodeBeschreibung
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.

 

Eigenschaften

Der MediaCaptureKlasse hat diese Eigenschaften.

EigenschaftZugriffstypBeschreibung

AudioDeviceController

SchreibgeschütztGets an object that controls settings for the microphone.

MediaCaptureSettings

SchreibgeschütztGets the configuration settings for the MediaCapture object.

VideoDeviceController

SchreibgeschütztGets an object that controls settings for the video camera.

 

Hinweise

Die MediaCapture-Klasse wird verwendet, um Audio, Video und Bilder aus einer Kamera aufzuzeichnen. Die InitializeAsync-Methode, die das Aufnahmegerät initialisiert, muss aufgerufen werden, bevor Sie mit dem Gerät aufnehmen können.

Verwenden Sie PrepareLowLagPhotoSequenceCaptureAsync, um den Fotosequenzmodus einzurichten, der eine schnelle Sequenz von Fotos aufnimmt. Unter Beispiel für Medienerfassung finden Sie ein Beispiel für eine Fotosequenz.

Sie können die VideoDeviceController-Eigenschaft verwenden, um mit dem Aufnahmegerät zu interagieren. Sie können beispielsweise die Eigenschaften TorchControl und FlashControl verwenden, um die LED und das Blinken auf dem Gerät festzulegen. Andere Eigenschaften für den VideoDeviceController sind SceneModeControl, RegionsOfInterestControl, FocusControl und IsoSpeedControl. Jedes Steuerelement stellt eine Supported-Eigenschaft bereit, um festzustellen, ob die Gerätehardware das Steuerelement unterstützt.

In C#- oder C++-Apps, sollte das MediaCapture-Objekt für den Aufruf von InitializeAsync zuerst in dem STA-Thread verwendet werden. Aufrufe von einem MTA-Thread führen möglicherweise zu nicht definiertem Verhalten.

InitializeAsync zeigt einen Bestätigungsaufforderung an, um vom Benutzer die Erlaubnis dafür einzuholen, dass die App auf das Mikrofon oder die Kamera zugreifen darf. InitializeAsync sollte aus dem Haupt-UI-Thread Ihrer App aufgerufen werden. Weitere Informationen finden Sie unter Richtlinien zum Aktivieren von vertraulichen Geräten.

Zeigt die App eine Vorschau an und wechselt in einen nicht sichtbaren Status, sollte die Vorschau beendet werden. Kehrt die App in einen sichtbaren Zustand zurück, muss MediaCapture neu erstellt werden.

Musik- und Medienerfassungs-Apps sollten das SystemMediaTransportControls.SoundLevel überwachen, um zu bestimmen, ob die Audiostreams auf der App Muted wurden. Für Apps, die das MediaCapture-Objekt verwenden, wird die Erfassung automatisch beendet, wenn die Erfassungsstreams der App stumm geschaltet werden. Die Erfassung wird nicht automatisch neu gestartet, wenn bei den Audiostreams die Stummschaltung aufgehoben wird. Daher kann die geänderte SoundLevel-Benachrichtigung verwendet werden, um die Erfassung neu zu starten. Verwenden Sie das SystemMediaTransportControls.PropertyChanged-Ereignis, um zu bestimmen, wann die SoundLevel-Eigenschaft geändert wird.

In den Nur-Audio-Apps in Windows 8.1 wird der Modus mit langer Wartezeit verwendet, wenn die MediaCategory-Einstellung Other lautet. Für eine niedrige Latenz legen Sie die MediaCategory-Einstellung auf Communications fest.

MediaCapture unterstützt nur CBR-Einwegcodierung.

Notes on JPEG: JPEG-Typen sind nur Passthrough. Um ein Bild zu erfassen, kann das Bildcodierungsprofil auf Automatisch festgelegt werden, oder Sie müssen Sie ein Codierungsprofil angeben, das mit dem systemeigenen Typ übereinstimmt. Um einen Effekt hinzuzufügen, müssen Sie zu einem dekomprimierten systemeigenen Videomedientyp wie NV12 oder RGB32 wechseln.

Notes on H.264: Wenn der systemeigene Typ H.264 ist, können Sie mit einem Videomedientyp aufzeichnen, dessen Typ identisch mit dem systemeigenen Typ ist. Sie können einen Effekt keinem systemeigenen Stream des Typs H.264 hinzufügen. Um ein Video zu erfassen, kann das Bildcodierungsprofil auf Automatisch festgelegt werden, oder Sie müssen Sie ein Codierungsprofil angeben, das mit dem systemeigenen Typ übereinstimmt.

Hinweis  : Es handelt sich nicht um eine agile Klasse. Daher müssen Sie das Threadingmodell und das Marshallingverhalten berücksichtigen. Weitere Informationen finden Sie unter Threading und Marshalling (C++/CX) und Die Verwendung von Windows-Runtime-Objekten in einer Multithreaded-Umgebung (.NET).

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie ein MediaCapture-Objekt erstellt und initialisiert wird.


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


Im Folgenden ein Beispiel, das zeigt, wie eine Webkamera mithilfe eines CaptureElement in der Vorschau angezeigt werden kann und wie ein Foto aufgenommen und in einem Image-Objekt angezeigt werden kann. Der XAML erstellt eine einfache UI mit einem CaptureElement, Image und einigen Button-Objekten, um mit dem MediaCapture-Element zu interagieren. Im Code gibt es eine Möglichkeit, um das MediaCapture-Objekt zu initialisieren, eine Methode, um die Vorschaufunktion der Kamera, die zum MediaCapture-Objekt gehört, zu starten, eine Methode zum Beenden der Vorschau, und eine Methode, um ein Foto aufzunehmen und anzuzeigen.


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


Unter Beispiel für Medienerfassung finden Sie ein Beispiel für eine Medienerfassung.

Wenn Sie die Medienaufzeichnung und andere wichtige Funktionen von Windows 8 ausprobieren möchten, laden Sie die praktischen Übungen für Windows 8 herunter. Diese Labs stellen eine modulare, schrittweise Einführung in das Erstellen einer Beispiel-Windows Store-App in der Programmiersprache Ihrer Wahl bereit (JavaScript und HTML oder C# und XAML).

Anforderungen

Mindestens unterstützter Client

Windows 8 [Windows Store-Apps, Desktop-Apps]

Mindestens unterstützter Server

Windows Server 2012 [Windows Store-Apps, Desktop-Apps]

Namespace

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

Metadaten

Windows.winmd

Capabilities

webcam
microphone

Siehe auch

Richtlinien zum Aktivieren von vertraulichen Geräten
Wegweiser
Hinzufügen von Multimedia zu Windows Store-Apps mit C++, C# oder Visual Basic
Hinzufügen von Multimedia zu Windows Store-Apps mit JavaScript
Beispiele
Beispiel für Medienerfassung
Beispiel für Kameraerfassungs-Benutzeroberfläche
Beispiel für Kameraoptionen-Benutzeroberfläche
Beispiel für Geräte-Enumeration
Beispiel für eine Echtzeitkommunikation
Beispiel für Medienerweiterung
Praktische Übungen für Windows 8
Weitere Ressourcen
Unterstützte Audio- und Videoformate

 

 

Anzeigen:
© 2017 Microsoft