MultiSourceMediaFrameReference 类

定义

一个包装类,提供对从一个或多个 MediaFrameSource 对象获取的时间相关帧的访问。 调用 TryGetFrameReferenceBySourceId 以获取表示特定媒体帧源中的帧的 MediaFrameReference

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
继承
Object Platform::Object IInspectable MultiSourceMediaFrameReference
属性
实现

Windows 要求

设备系列
Windows 10 Creators Update (在 10.0.15063.0 中引入)
API contract
Windows.Foundation.UniversalApiContract (在 v4.0 中引入)

注解

若要从媒体帧源获取 MultiSourceMediaFrameReference 的实例,请通过在 MediaCapture 对象上调用 CreateMultiSourceFrameReaderAsync 并传入要从中读取的 MediaFrameSource 对象来创建 MultiSourceReader 通过调用 StartAsync 启动后,调用 TryAcquireLatestFrame 以获取 MultiSourceMediaFrameReference ,其中包含媒体帧源中最新的相关帧。

通过调用 MultiSourceMediaFrameReference.TryGetFrameReferenceBySourceId 并传入所需媒体帧源的 MediaFrameSourceInfo.Id 属性的值,从特定媒体帧源获取时间相关的媒体帧。

每个 MultiSourceMediaFrameReader 维护从 MultiSourceMediaFrameReference.TryGetFrameReferenceBySourceId 获取的 MediaFrameReference 对象的循环缓冲区。 使用缓冲区中的所有 MediaFrameReference 对象后,对 TryAcquireLatestFrame 的后续调用将导致系统在最早的缓冲区对象上调用 Close (或 Dispose (在 C#) 中)以重复使用它。 释放对象后,就不能再使用它来访问帧数据。 因此,存储 MediaFrameReference 对象的时间不应超过处理帧所需的时间。 如果应用方案要求你保留对数据的引用更长的时间,则应使用提供的 API 之一来获取基础数据。 这些方法包括:

重要

如果访问 MediaFrameReferenceVideoMediaFrame 属性提供的 SoftwareBitmapDirect3DSurface 对象,系统会创建对这些对象的强引用,这意味着在对包含的 MediaFrameReference 调用 Dispose 时,它们不会被释放。 必须直接为要立即释放的对象显式调用 SoftwareBitmapDirect3DSurfaceDispose 方法。 否则,垃圾回收器将最终为这些对象释放内存,但无法知道这将何时出现,并且如果分配的位图或曲面的数量超过系统所允许的最大量,将停止新帧的流程。

有关使用 MediaFrameSource 捕获帧的操作指南,请参阅 使用 MediaFrameReader 处理媒体帧

方法

Close()

释放 对象和关联的资源。

Dispose()

执行与释放或重置非托管资源关联的应用程序定义的任务。

TryGetFrameReferenceBySourceId(String)

尝试获取指定媒体帧源的时间相关 MediaFrameReference

适用于

另请参阅