制作人 SDK 结构 - Amazon Kinesis Video Streams
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

制作人 SDK 结构

本节包含有关可用于向 Kinesis Video Streams Producer 对象提供数据的结构的信息。

DeviceInfo/DefaultDeviceInfoProvider

DeviceInfoDefaultDeviceInfoProvider对象控制 Kinesis Video Streams Producer 对象的行为。

成员字段

  • version-一个整数值,用于确保在当前版本的代码库中使用正确的结构版本。当前版本使用 DEVICE_INFO_CURRENT_VERSION 宏指定。

  • name — 设备的人类可读名称。

  • tagCount/tags — 当前未使用。

  • StreamCount — 设备可以处理的最大直播数量。这会为最初指向流对象的指针预分配存储,但实际流对象将稍后创建。默认值为 16 个流,但可在 DefaultDeviceInfoProvider.cpp 文件中更改此数字。

  • storageInfo:描述主存储配置的对象。有关更多信息,请参阅StorageInfo

StorageInfo

指定 Kinesis Video Streams 的主存储配置。

默认实施基于低片段快速堆实施,这一实施针对流式处理进行了优化。它使用 MEMALLOC 分配器,可以在指定平台上覆盖。一些平台具有虚拟内存分配,没有物理页分配的支持。由于使用了内存,虚拟页由物理页提供支持。在存储利用不充分时,这会导致整个系统面临内存不足压力。

根据以下公式计算默认存储大小。DefragmentationFactor 应设置为 1.2 (20%)。

Size = NumberOfStreams * AverageFrameSize * FramesPerSecond * BufferDurationInSeconds * DefragmentationFactor

在以下示例中,设备具有音频和视频流。音频流每秒采样 512 次,平均样本 100 字节。视频流每秒 25 帧,平均 10000 字节。每个流的缓冲时长为 3 分钟。

Size = (512 * 100 * (3 * 60) + 25 * 10000 * (3 * 60)) * 1.2 = (9216000 + 45000000) * 1.2 = 65059200 = ~ 66MB.

如果设备有更多可用内存,我们建议您在存储空间中添加更多内存,以避免出现严重的碎片。

验证存储大小是否足以容纳编码复杂度高(当帧大小因高动态而变大时)或带宽较低时的所有流的完整缓冲区。如果生产者达到内存压力,它就会发出存储溢出压力回调 () StorageOverflowPressureFunc。但是,当内容存储中没有可用内存时,它会丢弃正在推送到Kinesis Video Streams的帧并显示错误STATUS_STORE_OUT_OF_MEMORY = 0x5200002e()。有关更多信息,请参阅客户端库返回的错误和状态码:如果应用程序确认 (ACK) 不可用或者持久 ACK 延迟,也会出现这种情况。在这种情况下,在前一帧开始丢失之前,缓冲区将填充到 “缓冲持续时间” 容量。

成员字段

  • version-一个整数值,用于确保在当前版本的代码库中使用正确的结构版本。

  • StorageT ype — DEVICE_STORAGE_TYPE 一个枚举,用于指定存储的底层支持和实现。目前唯一支持的值是 DEVICE_STORAGE_TYPE_IN_MEM。未来的实施中将支持 DEVICE_STORAGE_TYPE_HYBRID_FILE,指示存储回退到由文件支持的内容存储。

  • 存储大小-要预分配的存储大小(以字节为单位)。最小分配大小为 10 MB,最大为 10 GB。(在未来实施由文件支持的内容存储时,这会有所更改。)

  • sp illRatio — 一个整数值,表示要从直接内存存储类型 (RAM) 与二级溢出存储(文件存储)中分配的存储空间的百分比。当前未使用。

  • rootDirectory:由文件支持的内容存储所在目录的路径。当前未使用。