音频是否可以同时打开多个输入输出流? 每一个流参数都不一样?

Viewed 79

image.png

音频是否可以同时打开多个输入和输出的流? 如果可以 那么是否可以为每一个使用open打开的流都配置不同的参数?

如果上面的条件都成立的情况下

  1. 当输入的时候 是否可以多个输入流同时输入? 库是按先后输入顺序执行还是自动混音后同时输出?
  2. 当输出的时候 是否可以多个流同时读取数据?
1 Answers

使用sdk接口是可以同时打开多路通路的:k230 板子包含了2组I2S 接口(I2S0 和 I2S1)和4组PDM接口,但仅 I2S0 连接了板载麦克风和 3.5mm 耳机接口,I2S1 和pdm未连接任何物理音频设备,无法直接输入 / 输出声音,需要自行设计外接音频子板来满足多路音频需求。如果使用现有的k230板子,不外接音频子板,即使打开多路,也只有一路能正常工作。

你的需求也可以通过软件这样实现:
音频采集:利用现有 I2S0 通路完成音频采集,如果想将采集后的数据做多路复用,可以实时复制音频数据,对复制后的数据可进行重采样(实现不同采样率功能),以满足多路需求。
音频播放:对多路待播放的数据进行混音处理后,合成为一路音频后再调用接口输出。

也就是说 虽然文档中提到 “负责管理多路音频输入和输出通路,每路通路均以流( Stream)类对象体现。” 但其实并不能实现多路输入和输出 想要实现这样的效果还是只有按照你提供的这个思路来自行实现

另外 当我直接初始化的时候 内部逻辑是直接帮我初始化了I2S0是嘛? 如果要使用I2S1的话 需要自行编写C层供py调用才行

audio demo里面的代码,是直接初始化了I2S0。如果你想初始化I2S1,参见Stream构造函数的input_device_index和output_device_index,当指定为数值1时,表示初始化I2S1。但是因为I2S1未连接任何物理音频设备,均无法正常工作。