MultiSourceMediaFrameReader.TryAcquireLatestFrame 方法

定义

尝试获取 MultiSourceMediaFrameReference 对象,该对象提供对一个或多个 MediaFrameSource 对象中与时间相关的最新帧的访问权限。

public:
 virtual MultiSourceMediaFrameReference ^ TryAcquireLatestFrame() = TryAcquireLatestFrame;
MultiSourceMediaFrameReference TryAcquireLatestFrame();
public MultiSourceMediaFrameReference TryAcquireLatestFrame();
function tryAcquireLatestFrame()
Public Function TryAcquireLatestFrame () As MultiSourceMediaFrameReference

返回

一个 MultiSourceMediaFrameReference,用于从媒体帧源访问最新帧。

注解

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

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

重要

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

适用于

另请参阅