Astra SDK
v2.1.3
|
我们已经完成了 Astra SDK 的安装过程,并熟悉了一些基本的操作,现在让我们将视线转移 到SDK的三个核心概念 - streams,streamsets and readers。了解这些概念对于我们后期的开 发和应用有着至关重要的意义。此外,深入理解这三个概念对于后期深入研发以及快速上手未来 可能发布的SDK新功能都会有极大的帮助。
Streams是从特定数据源发出的连续帧形成的流。可以简单理解为老电影的拍摄播放模式,由录制 的一张张的图像连续输出而形成的视频。每一张图像可看作一帧,Streams可以理解为一部连续的 视频。Streams与视频的不同点是,stream并不需要有结束点。
Streams有很多不同的形式。例如,彩色帧组成彩色视频流,深度帧组成深度视频流。以上两种视 频一般都来源于实体相机(Astra等),然而一些视频流也可以利用SDK中的‘plugins’来生成(更 多关于‘plugins’的内容,会在后面介绍)。以SDK中的手势追踪(hand tracker)来举例,此手 部视频流是利用深度流的数据来生成的。
SDK支持的流可以参考流的类型.
StreamSets是一组相互有联系的streams。接着上面关于老电影的比喻,现代的电影不止有连续的 视频,同时也会有音频。视频和音频相结合即为电影,两者缺一不可。这种声音和图像组成的结合 体即可理解为一种streamsets。
streamset可以包含从实体相机中输出的数据,也可以包含其他从SDK 插件中生成的数据。比如 Astra相机就可以看成是由彩色和深度视频流,以及中间件生成的流(比如手势追踪数据)组成的 streamset。
每个Streamsets都用一个唯一的URI字符串来做标识,这使得开发者在开发过程中可以同时调用多 个不同的streamsets。这个方法对于需要同时调用多个streamsets的情况提供了极大的帮助,此 方法同样可应用于访问网络服务器产生的上层stream。
StreamReader是我们查看stream里面每一帧的窗口。在读取来自streamsets中的任意一帧数据时 ,我们需要使用streamset去创建一个读取工具来访问stream里的每一帧。我们再次以老电影为例 来解释Reader的作用。当一部电影包含了所用需要的音频和视频信息后,电影本身并不具备播放功 能。此时需要另一台设备,卷筒式放映机。放映机不仅可以读取电影信息并投射到屏幕上,同时也 可以将视频和音频同步,从而达到最佳播放效果。
StreamReader的作用与卷筒式放映机大致相同。它可以接受来自streamset(比如电影)的特定流 信息同时输出每一帧的信息到目标软件中(即放映机)。每个reader可以同时读取许多不同规格类 型的streams。一个streamset可以同时在目标程序中拥有多个可以读取其中数据的reader。如果一 个reader同时读取了多个不同的streams,通常在传递到目标前,reader都会将数据进行同步后再 输出。