APP下载

Google释出低延迟音讯C++函式库Oboe,让声音不再累格

消息来源:baojiabao.com 作者: 发布时间:2024-04-19

报价宝综合消息Google释出低延迟音讯C++函式库Oboe,让声音不再累格

Google释出开源低延迟音讯C++函式库Oboe,可用于建构即时音讯应用程序,并且为广泛的Android装置,提供尽可能最低延迟的音讯操作功能。

Oboe负责处理应用程序间的音讯资料移动,或是Android装置上的音讯输出与输入,应用程序透过读取或是写入串流,来进行资料传输,Oboe读取或是写入的呼叫,可以选择是堵塞式(Blocking)或是非堵塞式(Non-blocking)的。

Oboe的串流由三部分组成,分别是音讯装置(Audio Device)、模式以及音讯格式。每个串流都会连接到一个单一的音讯装置,音讯装置可以解释成硬件界面或是虚拟端点,以作为数位音讯资料连续串流的来源或是接受器。Google提醒,这与装置上的麦克风或是蓝牙耳机的声音装置,或是其他手机或手表等Android装置不同。

 

每个音讯装置在Android装置上都有一个唯一的ID,开发者可以利用这个ID,将音讯串流绑定到特定的音讯装置上,但多数的情况下,可以让Oboe选择预设主装置,而不需要自行设定。附加到音讯装置上需要设定输出还是输入,串流只能以一个方向移动,因此开发者在定义串流的时候,需设定让音讯装置与串流方向一致。

Oboe的音讯串流提供独占和分享模式。独占串流会独占存取音讯装置上的端点,任何其他的音讯串流都无法使用该端点,也就是说,当端点正被使用时,其他端点是无法获得其存取权限的。由于独占串流绕过混音器,因此能达到最低的延迟,开发者应该让应用程序在不使用时,关闭独占串流,以便其他应用程序可以存取被占用的端点,但也并非所有音讯装置都提供独占端点。使用独占串流仍然可以听到其他应用程序或是系统的声音,因为这些应用使用不同的端点。Oboe允许混合音讯,Oboe会混合所有指定到音讯装置上相同端点的分享串流。

Oboe音讯串流的格式包含三种属性,样本格式、每帧样本以及采样率,开发者必须在定义串流时指定这些属性,Oboe可能会自动执行样本转换,而在任何串流方向上都可能发生转换,当开发者的应用程序处理音讯输入,明智的作法则要事先验证格式,以便之后转换需要。

Oboe除了能在Orea MR1(API 27+)上利用了AAudio效能和功能的改进外,也维持在API 16+的向后相容性。Google表示,Oboe以C++编写而成,开发者能撰写较少的程式码,只需要三行程式码就能创建音讯串流,但使用OpenSL ES则需要超过50行程式码。另外,Oboe是以函式库的方式释出,因此有独立更快的更新周期,而非Android平台的发布周期。

2018-10-15 19:33:00

相关文章