# onix-mp3-decoder **Repository Path**: 58291/onix-mp3-decoder ## Basic Information - **Project Name**: onix-mp3-decoder - **Description**: 一个轻量级、跨平台的终端字符界面MP3播放器,支持Windows、Linux、macOS以及Onix 操作系统,(Onix是一个开源的操作系统实现项目,由开发者 StevenBaby 维护)。 - **Primary Language**: C - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-11-29 - **Last Updated**: 2025-10-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Mini MP3 播放器 一个轻量级、跨平台的终端字符界面MP3播放器,支持Windows、Linux和macOS。 ![Mini MP3 Player](screenshots/player.png) ## 功能特点 - 轻量级终端界面,无需图形环境 - 跨平台支持:Windows、Linux、macOS - MP3文件列表显示与管理 - 显示MP3文件的ID3v2标签信息(标题、艺术家、专辑、年份等) - 音频播放控制(播放、暂停、上一首、下一首) - 音量调节与静音控制 - 自动适应终端窗口大小变化 ## 系统要求 ### Windows - MSYS2环境 - MinGW-w64工具链 - Windows多媒体库(winmm)和DirectSound库(dsound) ### Linux - ALSA音频库 - 可选:PulseAudio音频库 - 开发工具:gcc、make ### macOS - CoreAudio框架 - 开发工具:XCode命令行工具或gcc、make ## 编译指南 > **注意**: 程序已内置libmad MP3解码库,无需额外安装该库。 ### Windows (MSYS2) 1. 安装MSYS2:从[MSYS2官网](https://www.msys2.org/)下载并安装 2. 安装必要的开发包: ```bash pacman -S mingw-w64-x86_64-gcc make ``` 3. 编译项目: ```bash cd onix-mp3-decoder make ``` ### Linux 1. 安装必要的开发包: ```bash # 对于基于Debian的发行版(如Ubuntu) sudo apt-get install gcc make libasound2-dev # 可选:PulseAudio支持 sudo apt-get install libpulse-dev ``` 2. 编译项目: ```bash cd onix-mp3-decoder make # 使用ALSA # 或者 make pulseaudio=1 # 使用PulseAudio ``` ### OpenWrt 下面是我在OpenWrt21.02.2编译的实例,其他版本可以参考,要查看OpenWrt使用的musl和alsa-lib版本,并下载正确的版本编译。在OpenWrt下运行挺爽,可以在OpenWrt设备(比如路由器)插USB耳机听歌,USB耳机可用手机上用的USB-C转接。 1. 下载并编译必要的库: ```bash # 下载musl-1.1.24 wget https://musl.libc.org/releases/musl-1.1.24.tar.gz tar -zxvf musl-1.1.24.tar.gz cd musl-1.1.24 ./configure && make && make install cd .. # 下载alsa-lib-1.2.4 wget https://www.alsa-project.org/files/pub/lib/alsa-lib-1.2.4.tar.bz2 tar -jxvf alsa-lib-1.2.4.tar.bz2 cd alsa-lib-1.2.4 ./configure && make && make install cd .. ``` 2. 修改项目Makefile: ```bash # 在Makefile中添加或修改以下行 LIBS +=-L/root/musl-1.1.24/lib -L/usr/lib -lpthread -Wl,-rpath,/usr/lib -L/usr/lib -l:libasound.so.2 -v -Wl,--unresolved-symbols=ignore-in-object-files CFLAGS += -I../alsa-lib-1.2.4/include ``` 3. 编译项目: ```bash cd onix-mp3-decoder make ``` ### macOS 1. 安装XCode命令行工具(如果尚未安装): ```bash xcode-select --install ``` 2. 编译项目: ```bash cd onix-mp3-decoder make ``` ### Onix Onix 操作系统是一个开源的操作系统实现项目,由开发者 StevenBaby 维护,旨在从零构建一个功能全面的操作系统,涵盖底层硬件交互(如中断控制器、定时器、键盘驱动)到上层服务(如文件系统、网络协议栈、图形驱动等)。 0. 安装并编译onix: ```bash git clone https://github.com/StevenBaby/onix 或则用我修改的版本 git clone https://gitee.com/58291/onix 按项目完成配置 make qemu 生成 master.img 磁盘映像。 ``` 1. 编译项目: ```bash cd onix-mp3-decoder make -f Makefile-onix ``` 2. qemu中运行mp3-player: ``` make qemu # 在虚拟机中输入 cd /data mp3-player sample.mp3 # 说明:onix版mp3播放器只支持命令行播放单个mp3文件 ``` ## 使用方法 ### 基本用法 ```bash ./out/mp3-player [选项] mp3_文件或目录 ``` ### 命令行选项 - `-h`, `--help`:显示帮助信息 - `-v`, `--verbose`:启用详细输出模式 - `-t [num]`:指定PCM播放器编号(如果有多个可用) ### 例子 ```bash # 播放单个MP3文件 ./out/mp3-player sample.mp3 # 播放目录中的所有MP3文件 ./out/mp3-player ~/Music/ # 使用特定的音频设备 ./out/mp3-player -t 2 sample.mp3 ``` ## 控制键 在播放器运行时,可以使用以下按键控制: - `+` / `-`:增大/减小音量 - `M` / `m`:切换静音 - `N` / `n` / `PageDown`:播放下一首 - `B` / `b` / `PageUp`:播放上一首 - `P` / `p` / `Space`:暂停/继续播放 - `S` / `s` / `Q` / `q` / `Ctrl-C`:停止播放并退出程序 ## 界面说明 播放器界面分为三个区域: 1. **控制信息区**:显示当前播放时间、音量、播放状态和文件名 2. **文件列表区**:显示可播放的MP3文件及其ID3标签信息 3. **日志区**:显示播放器的操作日志和调试信息 ## 故障排除 ### 播放问题 - 如果没有声音输出,请检查系统音量设置和静音状态 - 使用 `-t` 选项尝试不同的PCM播放器 ### 编译问题 - Windows:确保已安装DirectSound开发库 - Linux:检查是否安装了ALSA或PulseAudio开发库 - macOS:确保已安装CoreAudio框架 ## 项目结构 - `src/mp3-player.c`:主程序,包含用户界面和控制逻辑 - `src/list-files.c`:文件列表管理,支持搜索MP3文件 - `src/mp3-parse-id3v2.c`:ID3v2标签解析,支持多种编码 - `src/pcm-player-*.c`:各平台的音频输出实现 - `src/libmad/`:内置的MP3解码库源码,无需额外安装 ## 授权协议 该项目采用MIT许可证。详情请参阅LICENSE文件。 ## 贡献 欢迎提交问题报告和改进建议到项目的Issue跟踪器。