Freigeben über


MultiSourceMediaFrameReference Klasse

Definition

Eine Wrapperklasse, die Zugriff auf zeit korrelierte Frames ermöglicht, die aus einem oder mehreren MediaFrameSource-Objekten abgerufen werden. Rufen Sie TryGetFrameReferenceBySourceId auf, um mediaFrameReference abzurufen, die einen Frame aus einer bestimmten Medienframequelle darstellt.

public ref class MultiSourceMediaFrameReference sealed : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 262144)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class MultiSourceMediaFrameReference final : IClosable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 262144)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class MultiSourceMediaFrameReference : System.IDisposable
Public NotInheritable Class MultiSourceMediaFrameReference
Implements IDisposable
Vererbung
Object Platform::Object IInspectable MultiSourceMediaFrameReference
Attribute
Implementiert

Windows-Anforderungen

Gerätefamilie
Windows 10 Creators Update (eingeführt in 10.0.15063.0)
API contract
Windows.Foundation.UniversalApiContract (eingeführt in v4.0)

Hinweise

Um eine instance von MultiSourceMediaFrameReference aus einer Medienframequelle abzurufen, erstellen Sie einen MultiSourceMediaFrameReader, indem Sie CreateMultiSourceFrameReaderAsync für ein MediaCapture-Objekt aufrufen und die MediaFrameSource-Objekte übergeben, aus denen Sie lesen möchten. Nachdem Sie gestartet haben, indem Sie StartAsync aufgerufen haben, rufen Sie TryAcquireLatestFrame auf, um ein MultiSourceMediaFrameReference-Objekt abzurufen, das die neuesten korrelierten Frames aus den Medienframequellen enthält.

Rufen Sie den zeit korrelierten Medienframe aus einer bestimmten Medienframequelle ab, indem Sie MultiSourceMediaFrameReference.TryGetFrameReferenceBySourceId aufrufen und den Wert der MediaFrameSourceInfo.Id-Eigenschaft für die gewünschte Medienframequelle übergeben.

Jeder MultiSourceMediaFrameReader verwaltet einen kreisförmigen Puffer von MediaFrameReference-Objekten , die aus MultiSourceMediaFrameReference.TryGetFrameReferenceBySourceId abgerufen wurden. Nachdem alle MediaFrameReference-Objekte im Puffer verwendet wurden, führen nachfolgende Aufrufe von TryAcquireLatestFrame dazu, dass das System Close (oder Dispose in C#) für das älteste Pufferobjekt aufruft, um es wiederzuverwenden. Nachdem das Objekt verworfen wurde, können Sie es nicht mehr für den Zugriff auf die Framedaten verwenden. Aus diesem Grund sollten Sie das MediaFrameReference-Objekt nicht länger speichern, als Sie den Frame tatsächlich verarbeiten müssen. Wenn Ihr App-Szenario erfordert, dass Sie einen Verweis auf die Daten länger aufbewahren, sollten Sie eine der bereitgestellten APIs verwenden, um die zugrunde liegenden Daten abzurufen. Diese Methoden umfassen:

Wichtig

Wenn Sie auf das SoftwareBitmap- oder Direct3DSurface-Objekt zugreifen, das von der VideoMediaFrame-Eigenschaft eines MediaFrameReference bereitgestellt wird, erstellt das System einen starken Verweis auf dieses Objekt. Das bedeutet, dass sie nicht entfernt werden, wenn Sie Dispose auf dem MediaFrameReference aufrufen, der das Objekt enthält. Sie müssen die Dispose-Methode von SoftwareBitmap oder Direct3DSurface explizit direkt aufrufen, damit die Objekte sofort entfernt werden. Andernfalls wird der Garbage Collector den Speicher für diese Objekte schließlich freigeben. Sie wissen jedoch nicht, wann dies sein wird. Wenn die Anzahl der zugeteilten Bitmaps oder Oberflächen die maximale, vom System zugelassene Menge überschreitet, wird der Fluss neuer Frames beendet.

Anleitungen zur Verwendung von MediaFrameSource zum Erfassen von Frames finden Sie unter Verarbeiten von Medienframes mit MediaFrameReader.

Methoden

Close()

Entsorgt das Objekt und die zugeordneten Ressourcen.

Dispose()

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

TryGetFrameReferenceBySourceId(String)

Versucht, eine zeitrelrelierte MediaFrameReference für die angegebene Medienframequelle abzurufen.

Gilt für:

Weitere Informationen