完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
请各位大佬指教.
在做一个在线播放音频的设备,能记录播放的时间,想从上一次停止的时间再播放。比如从音频的1分钟以后开始播放。 之前用linux做的demo,现在想换成ESP32,但在ADF中,没找到合适的方法。还请各位多多指教。 之前做的方法是,先读文件的头信息,由时间计算要下载的文件的数据偏移量,下载数据流,播放。如果这么做,ADF有合适的方法吗?我翻了一下ADF的DEMO,都时从0时间播放的。 |
|
相关推荐
1个回答
|
|
要在ESP32上使用ADF(Espressif Audio Development Framework)实现从特定时间点播放音频的功能,你可以按照以下步骤操作:
1. **初始化音频组件**:首先,你需要初始化ESP32的音频组件,包括音频播放、音频解码等。 2. **读取音频文件头信息**:读取音频文件的头信息,获取音频的格式、采样率等信息。这有助于你计算数据偏移量。 3. **计算数据偏移量**:根据你想要从音频的哪个时间点开始播放,计算出对应的数据偏移量。例如,如果你想要从1分钟以后开始播放,你需要计算出1分钟对应的字节数。 4. **读取音频数据**:使用文件读取函数,从计算出的数据偏移量开始读取音频数据。 5. **创建音频流**:使用ADF的音频流组件,将读取到的音频数据创建为一个音频流。 6. **设置播放位置**:在创建音频流时,设置播放位置为你想要的时间点。这可能需要你根据音频的采样率和通道数计算出对应的采样数。 7. **播放音频**:使用ADF的音频播放组件,播放创建好的音频流。 8. **记录播放时间**:在播放过程中,记录当前的播放时间,以便下次播放时可以从上次停止的时间点继续播放。 以下是一个简化的示例代码,仅供参考: ```c #include "esp_log.h" #include "audio_element.h" #include "audio_pipeline.h" #include "audio_event_iface.h" #include "audio_common.h" #include "fatfs_stream.h" #include "wav_decoder.h" #define TAG "AudioPlay" void app_main() { // 初始化音频组件 audio_pipeline_handle_t pipeline; audio_element_handle_t wav_reader, wav_decoder; // 创建音频管道 pipeline = audio_pipeline_init(); // 创建wav文件读取组件 wav_reader = fatfs_stream_init(); audio_element_set_read_cb(wav_reader, _file_read_cb, NULL); // 创建wav解码组件 wav_decoder = wav_decoder_init(2, 44100); // 将组件添加到管道 audio_pipeline_register(pipeline, wav_reader, wav_decoder); // 初始化管道 audio_pipeline_link(pipeline, (const char *[]) {"wav_reader", "wav_decoder"}, 2, 0); // 设置播放位置 int offset = 44100 * 1 * 2 * 2; // 1分钟的字节数,根据音频格式计算 audio_element_set_byte_pos(wav_reader, offset); // 播放音频 audio_pipeline_run(pipeline); // 记录播放时间 // ... // 释放资源 audio_pipeline_deinit(pipeline); audio_element_deinit(wav_reader); audio_element_deinit(wav_decoder); } ``` 请注意,这只是一个示例,实际应用中可能需要根据你的具体需求进行调整。希望这对你有所帮助! |
|
|
|
只有小组成员才能发言,加入小组>>
429浏览 6评论
362浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
343浏览 5评论
349浏览 4评论
327浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-1 12:28 , Processed in 0.746363 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191