AppCaptureMetadataWriter 类

定义

使应用能够存储系统将插入到捕获的视频文件或广播应用内容流的元数据。

public ref class AppCaptureMetadataWriter sealed : IClosable
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Media.Capture.AppCaptureMetadataContract")]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Media.Capture.AppCaptureMetadataContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class AppCaptureMetadataWriter final : IClosable
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Media.Capture.AppCaptureMetadataContract")]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Media.Capture.AppCaptureMetadataContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class AppCaptureMetadataWriter : System.IDisposable
function AppCaptureMetadataWriter()
Public NotInheritable Class AppCaptureMetadataWriter
Implements IDisposable
继承
Object Platform::Object IInspectable AppCaptureMetadataWriter
属性
实现

Windows 要求

设备系列
Windows Desktop Extension SDK (在 10.0.16299.0 中引入)
API contract
Windows.Media.Capture.AppCaptureMetadataContract (在 v1.0 中引入)

注解

创建 AppCaptureMetadataWriter 实例时,系统将初始化应用的唯一实例,然后准备好编写元数据项。 尽管一次只能捕获或广播一个应用,但系统可以同时累积多个应用的元数据。 AppCaptureMetadataWriter 不会启动或修改当前捕获或广播状态。 只要希望系统将元数据保存在内存中,就应该创建并保留 AppCaptureMetadataWriter 的 实例。 释放 AppCaptureMetadataWriter 实例时,也会释放与该 AppCaptureMetadataWriter 实例关联的所有元数据。

编写元数据项时,系统会将时间戳与该项相关联,以便它自动包含在应用它的捕获或广播时间范围内。

目前, AppCaptureMetadataWriter 支持两种不同类型的元数据项:事件和状态。 元数据事件与单个时间点相关联,通常与即时操作(例如游戏中的玩家得分)相关联。 状态是跨时间窗口应用的元数据项。 其中一个示例是包含玩家当前所在的游戏地图名称的状态。 设置状态值后,系统将保留状态的该值,直到它设置为其他值,直到它通过调用 StopState 停止,或直到所有状态都通过对 StopAllStates 的调用结束。 事件和状态都表示为键/值对,其中键是状态或事件名称,值为整数、双精度值或字符串值。

启用历史应用捕获后,即使未主动捕获或广播,系统也会累积使用 AppCaptureMetadataWriter 编写的元数据。 例如,将前 30 秒的捕获写入磁盘上的视频文件时,与录制的时间窗口关联的元数据将包含在文件中。 系统对每个应用分配用于存储累积元数据的存储空间施加限制。 可以通过检查 RemainingStorageBytesAvailable 属性来获取当前可用的存储空间。

当所有分配的空间都已填满后,系统将开始使用 AppCaptureMetadataPriority 值(在写入元数据项时指定)以及每个项的期限来清除元数据,以便首先删除最旧、最不重要的数据。 发生这种情况时,将引发 MetadataPurged 事件。 为了响应此事件,可以选择减少应用正在写入的元数据量,但这不是必需的。

元数据项按 AppCaptureMetadataPriority 枚举指定分类为“重要”或“信息性”。 重要 优先级意味着元数据将上传到 Xbox Live 服务。 元数据将用于帮助用户搜索剪辑或批注广播等。 重要信息信息元数据都嵌入在生成的 .mp4 文件中,因此不应在元数据中包含任何私人用户信息。

如果后台服务由于空闲超时而关闭,则此 API 可能会引发错误。

构造函数

AppCaptureMetadataWriter()

初始化 AppCaptureMetadataWriter 类的新实例。

属性

RemainingStorageBytesAvailable

获取系统为应用捕获元数据项分配的存储空间中剩余的字节数。

方法

AddDoubleEvent(String, Double, AppCaptureMetadataPriority)

添加新的 double 元数据事件。

AddInt32Event(String, Int32, AppCaptureMetadataPriority)

添加新的整数元数据事件。

AddStringEvent(String, String, AppCaptureMetadataPriority)

添加新的字符串元数据事件。

Close()

释放 对象和关联的资源。

Dispose()

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

StartDoubleState(String, Double, AppCaptureMetadataPriority)

添加新的双元数据状态。

StartInt32State(String, Int32, AppCaptureMetadataPriority)

添加新的双元数据状态。

StartStringState(String, String, AppCaptureMetadataPriority)

添加新的双元数据状态。

StopAllStates()

停止所有元数据状态。

StopState(String)

停止具有指定标识符的元数据状态。

事件

MetadataPurged

在系统清除以前存储的元数据项时发生。

适用于