MediaFrameReference 类

定义

表示从 MediaFrameSource 获取的帧的包装类。 使用此类的属性访问源提供的特定帧类型,例如 VideoMediaFrameBufferMediaFrame

public ref class MediaFrameReference sealed : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 196608)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class MediaFrameReference final : IClosable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 196608)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class MediaFrameReference : System.IDisposable
Public NotInheritable Class MediaFrameReference
Implements IDisposable
继承
Object Platform::Object IInspectable MediaFrameReference
属性
实现

Windows 要求

设备系列
Windows 10 Anniversary Edition (在 10.0.14393.0 中引入)
API contract
Windows.Foundation.UniversalApiContract (在 v3.0 中引入)

注解

若要从媒体帧源获取 MediaFrameReference 的实例,请通过在已初始化为使用所需媒体帧源的 MediaCapture 对象上调用 CreateFrameReaderAsync 来创建 MediaFrameReader。 通过调用 StartAsync 启动帧读取器后,调用 TryAcquireLatestFrame 以获取表示媒体帧源中最新帧的 MediaFrameReference。

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

当这些 API 返回的对象不再被使用时,应用负责对这些 API 返回的对象调用 Close (或 Dispose) 。

重要

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

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

版本历史记录

Windows 版本 SDK 版本 增值
1803 17134 AudioMediaFrame

属性

AudioMediaFrame

获取由 MediaFrameReference 包装的 AudioMediaFrame(如果这是表示的帧的类型)。

BufferMediaFrame

获取由 MediaFrameReference 包装的 BufferMediaFrame(如果表示的帧类型)。

CoordinateSystem

获取所引用媒体帧的空间坐标系(如果已定义)。

Duration

获取所引用媒体帧的持续时间。

Format

获取引用媒体帧的格式。

Properties

获取所引用框架的属性映射。

SourceKind

获取引用帧源自的 MediaFrameSource 的类型,例如颜色、红外或自定义源。

SystemRelativeTime

获取相对于系统的时间戳,该时间戳可在同一设备上跨多个媒体源进行更正。

VideoMediaFrame

获取由 MediaFrameReference 包装的 VideoMediaFrame(如果表示的帧类型)。

方法

Close()

释放 对象和关联的资源。

Dispose()

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

适用于

另请参阅