Page 1 of 1

不能够同时播放和录音

Posted: Fri May 27, 2022 7:06 am
by dengbq
两个i2s,一个i2s1_cfg.type = AUDIO_STREAM_WRITER;用做录音,一个 i2s2_cfg.type = AUDIO_STREAM_READER;
i2s_stream_init(&i2s_cfg); 只有第一个能够初始成功,第二个在初始化时会报错:
E (8362) I2S: register I2S object to platform failed

分析代码,只能有一个i2s设备注册,再注册时会报错。

有什么解决办法?

Re: 不能够同时播放和录音

Posted: Wed Jun 08, 2022 8:26 am
by ESP_HengYC
你可以参考这个既录音又放音的例程, https://github.com/espressif/esp-adf/tr ... ve_to_file

Re: 不能够同时播放和录音

Posted: Fri Jun 10, 2022 2:32 am
by dengbq
多谢回复,现在已经找到能够同时录音和播放的方法了,音频流编码为opus,一个核对音频解码,voip_read_stream-->opus_decoder->I2S,
另一个核对录音数据进行opus编码,I2S->opus_decoder->voip_writer.
结果cpu受不了,播放卡顿,录音录了一堆杂音。cpu已经调到240Mhz了。不断触发watchdog wdt异常。

有什么建议没有?

Re: 不能够同时播放和录音

Posted: Fri Jun 10, 2022 2:39 am
by dengbq
另通过audio_element_set_read_cb设置opus_decoder的read函数,每次只读200个字节,但如果让opus_decoder与另一个audio_element对接,则每次读1024个字节,为什么两者相差这么大?
哪里有opus_decoder这个audio_element的源码?

Re: 不能够同时播放和录音

Posted: Tue Jul 19, 2022 12:21 pm
by ESP_HengYC
关于 task wdt 可以逐步注释一些 task 来定位下,看看是否有 while 死循环一直占用 CPU。