Skip to main content

MP3 播放器

本项目演示如何使用 reSpeaker Lite 开发板播放存储在 SPIFFS 文件系统中的 MP3 文件。

所需库

功能特性

  • 从 SPIFFS 文件系统播放 MP3 文件
  • 利用 I2S 接口进行音频输出
  • 支持元数据提取和回调
  • 易于使用的 AudioPlayer 类,实现无缝音频播放

上传文件到 SPIFFS

您可以参考这里的 Wiki

确保您拥有将文件上传到 SPIFFS 的必要工具。您可以使用 Arduino IDE 中的"ESP32 Sketch Data Upload"工具或外部工具如"ESP32 File Uploader"。

在您的项目目录中创建一个名为"data"的文件夹,并将您想要播放的 MP3 文件放入其中。

使用选择的工具将文件上传到 SPIFFS。

代码

#include "AudioTools.h"
#include "AudioLibs/AudioSourceSPIFFS.h"
#include "AudioCodecs/CodecMP3Helix.h"

const char *startFilePath="/";
const char* ext="mp3";
AudioSourceSPIFFS source(startFilePath, ext);
I2SStream i2s;
MP3DecoderHelix decoder;
AudioPlayer player(source, i2s, decoder);

void printMetaData(MetaDataType type, const char* str, int len){
Serial.print("==> ");
Serial.print(toStr(type));
Serial.print(": ");
Serial.println(str);
}

void setup() {
Serial.begin(115200);
AudioLogger::instance().begin(Serial, AudioLogger::Info);

// setup output
auto cfg = i2s.defaultConfig(TX_MODE);
i2s.begin(cfg);

// setup player
//source.setFileFilter("*Bob Dylan*");
player.setMetadataCallback(printMetaData);
player.begin();
}

void loop() {
player.copy();
}

配置

startFilePath:MP3 文件在 SPIFFS 中的目录路径(默认:"/")。

ext:音频文件的文件扩展名(默认:"mp3")。

您可以在代码中修改这些常量以匹配您的特定文件结构和需求。

自定义

printMetaData:当从音频文件中提取元数据时会调用此函数。您可以自定义此函数以根据您的需要处理元数据。

AudioSourceSPIFFS:您可以通过取消注释 //source.setFileFilter("Bob Dylan"); 这一行并将过滤器替换为您所需的条件来更改文件过滤器。

Loading Comments...