完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
git上拉取的master分支最新代码。
examplesplayerpipeline_bt_sink例程可以正常工作,手机连接蓝牙可以放歌。但是偶尔丢包,不过声音是正常的。Code: Select all BT_APPL: Pkt dropped 参考examplesadvanced_examplesrecord_while_play例子,在蓝牙例程中新建了一条录音的pipeline,跑起来看日志初始化正常,但是连接蓝牙放歌的时候会不停丢包,也没有声音了,保存的wav文件也是坏的。 录音pipeline代码如下Code: Select all static audio_pipeline_handle_t example_create_rec_pipeline(const char *url, int sample_rates, int channels){ audio_pipeline_handle_t pipeline; audio_pipeline_cfg_t pipeline_cfg = DEFAULT_AUDIO_PIPELINE_CONFIG(); pipeline = audio_pipeline_init(&pipeline_cfg); mem_assert(pipeline); ESP_LOGI(TAG, "[ * ] Save record data as %dHz, %dChannels wav file named [%s]", sample_rates, channels, url); fatfs_stream_cfg_t fatfs_write_cfg = FATFS_STREAM_CFG_DEFAULT(); fatfs_write_cfg.type = AUDIO_STREAM_WRITER; fatfs_stream_writer = fatfs_stream_init(&fatfs_write_cfg); i2s_stream_cfg_t i2s_file_cfg = I2S_STREAM_CFG_DEFAULT(); i2s_file_cfg.type = AUDIO_STREAM_READER;/* i2s_file_cfg.i2s_config.dma_buf_count = DMA_BUF_COUNT; i2s_file_cfg.i2s_config.dma_buf_len = DMA_BUF_LEN;*/ i2s_stream_reader = i2s_stream_init(&i2s_file_cfg); wav_encoder_cfg_t wav_file_cfg = DEFAULT_WAV_ENCODER_CONFIG(); wav_encoder = wav_encoder_init(&wav_file_cfg); rsp_filter_cfg_t rsp_file_cfg = DEFAULT_RESAMPLE_FILTER_CONFIG(); rsp_file_cfg.src_rate = 44100; rsp_file_cfg.src_ch = 1; rsp_file_cfg.dest_rate = sample_rates; rsp_file_cfg.dest_ch = channels; rsp_file_cfg.mode = RESAMPLE_DECODE_MODE; resample_for_rec = rsp_filter_init(&rsp_file_cfg); audio_pipeline_register(pipeline, i2s_stream_reader, "i2s"); audio_pipeline_register(pipeline, wav_encoder, "wav"); audio_pipeline_register(pipeline, resample_for_rec, "filter"); audio_pipeline_register(pipeline, fatfs_stream_writer, "file"); audio_pipeline_link(pipeline, (const char *[]) {"i2s", "filter", "wav", "file"}, 4); audio_element_set_uri(fatfs_stream_writer, url); return pipeline;} |
|
相关推荐
1个回答
|
|
从您的描述来看,您在使用ESP32的蓝牙播放和录音功能时遇到了一些问题,包括偶尔的丢包、没有声音以及无法正常保存WAV文件。以下是一些建议和解决方案:
1. **检查硬件连接**:确保您的ESP32模块与SD卡之间的连接是稳定的。松动的连接可能导致数据传输问题。 2. **检查SD卡**:确保SD卡没有损坏,并且有足够的空间来保存录音文件。您可以尝试使用另一张SD卡,看看问题是否仍然存在。 3. **调整采样率和通道数**:您提到了采样率和通道数的参数,确保这些参数与您的音频源和录音需求相匹配。如果可能的话,尝试使用不同的采样率和通道数设置。 4. **优化代码**:检查您的录音pipeline代码,确保没有逻辑错误或资源竞争问题。例如,确保在录音过程中没有尝试同时播放音频。 5. **使用任务优先级**:在ESP32中,您可以通过调整任务优先级来确保关键任务(如音频播放和录音)获得足够的CPU时间。尝试提高这些任务的优先级。 6. **检查内存使用**:ESP32的内存有限,如果内存使用过高,可能会导致性能问题。使用`esp_get_free_heap_size()`函数检查内存使用情况,并优化代码以减少内存占用。 7. **更新ESP-IDF和组件**:确保您使用的是最新版本的ESP-IDF和相关组件,因为新版本可能修复了旧版本中的一些问题。 8. **调试和日志记录**:增加更多的日志记录,以便更好地了解问题发生的原因。您可以使用`esp_log_level_set()`函数来设置日志级别。 9. **社区支持**:如果您在GitHub上找到了相关的issue或者讨论,可以参与讨论或者寻求社区的帮助。 10. **测试不同的示例代码**:尝试使用ESP-IDF提供的其他示例代码,看看问题是否仍然存在。这有助于确定问题是否与特定的代码或配置有关。 最后,如果您在解决问题的过程中遇到困难,可以考虑向ESP-IDF的开发者或者社区寻求帮助,他们可能能提供更具体的解决方案。 |
|
|
|
只有小组成员才能发言,加入小组>>
429浏览 6评论
362浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
343浏览 5评论
349浏览 4评论
327浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-1 06:46 , Processed in 0.749680 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号