不能够同时播放和录音

dengbq
Posts: 38
Joined: Thu Mar 31, 2022 8:45 am

不能够同时播放和录音

Postby dengbq » Fri May 27, 2022 7:06 am

两个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设备注册,再注册时会报错。

有什么解决办法?

ESP_HengYC
Posts: 184
Joined: Fri Dec 15, 2017 2:45 am

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

Postby ESP_HengYC » Wed Jun 08, 2022 8:26 am

你可以参考这个既录音又放音的例程, https://github.com/espressif/esp-adf/tr ... ve_to_file

dengbq
Posts: 38
Joined: Thu Mar 31, 2022 8:45 am

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

Postby dengbq » Fri Jun 10, 2022 2:32 am

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

有什么建议没有?

dengbq
Posts: 38
Joined: Thu Mar 31, 2022 8:45 am

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

Postby dengbq » Fri Jun 10, 2022 2:39 am

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

ESP_HengYC
Posts: 184
Joined: Fri Dec 15, 2017 2:45 am

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

Postby ESP_HengYC » Tue Jul 19, 2022 12:21 pm

关于 task wdt 可以逐步注释一些 task 来定位下,看看是否有 while 死循环一直占用 CPU。

Who is online

Users browsing this forum: No registered users and 32 guests