type
status
date
slug
summary
tags
category
icon
password

TUI 音乐播放器

一个基于 Rust 的终端用户界面音乐播放器,使用 ratatui、crossterm 和 rodio 构建。

功能特性

  • 🎵 支持多种音频格式:MP3、WAV、FLAC、OGG、M4A、MP4A
  • ▶️ 播放/暂停控制
  • ⏭️ 下一曲/上一曲
  • 🔄 自动播放下一曲
  • 🔀 随机播放模式
  • 🔊 音量控制
  • 📋 播放列表显示
  • 🎨 美观的 TUI 界面

安装和运行

前提条件

  • Rust 1.70 或更高版本
  • 音频文件放在 assets/ 目录下

音频文件存储位置

程序会自动扫描 assets/ 目录下的音频文件。支持的音频格式包括:
💡 提示:请将你的音频文件放在 assets/ 目录下,程序会自动扫描并加载它们。
  • MP3 - 最常见的音频格式
  • WAV - 无损音频格式
  • FLAC - 无损压缩音频格式
  • OGG - 开源音频格式
  • M4A - Apple 音频格式
  • MP4A - MPEG-4 音频格式

目录结构示例

音频文件命名建议

  • 使用有意义的文件名,如:artist - song title.mp3
  • 避免使用特殊字符(除了连字符和空格)
  • 文件名会显示在播放列表中

构建和运行

控制键

按键
功能
空格键
播放/暂停
N
下一曲
P
上一曲
S
切换随机播放
+ / -
调节音量
0-9
快速设置音量 (0-90%)
M
最大音量
/
微调音量
/
上一曲/下一曲
Q
退出程序
自动播放功能:当一首歌曲播放完毕后,程序会自动播放下一首歌曲,无需手动操作。

界面说明

程序界面分为以下几个部分(如上图所示):
  1. 标题栏 - 显示程序名称
  1. 播放状态 - 显示当前播放的歌曲和播放状态
  1. 进度条 - 显示播放进度和音量
  1. 控制说明 - 显示可用的控制键
  1. 播放列表 - 显示所有可播放的歌曲,当前播放的歌曲会高亮显示

项目结构

技术栈

  • ratatui - 终端用户界面库
  • crossterm - 跨平台终端操作
  • rodio - 音频播放库
  • symphonia - 音频解码库
  • anyhow - 错误处理
  • rand - 随机数生成(用于随机播放)

支持的音频格式

程序支持以下音频格式,这些文件可以放在 assets/ 目录中:
  • MP3 - 最常见的压缩音频格式,文件小,兼容性好
  • WAV - 无损音频格式,音质好但文件较大
  • FLAC - 无损压缩音频格式,音质好且文件相对较小
  • OGG - 开源音频格式,压缩效率高
  • M4A - Apple 音频格式,常用于 iTunes
  • MP4A - MPEG-4 音频格式,兼容性好

音频文件要求

  • 文件必须放在 assets/ 目录下
  • 支持的文件扩展名:.mp3, .wav, .flac, .ogg, .m4a, .mp4a
  • 程序启动时会自动扫描并加载所有支持的音频文件
  • 如果某个文件无法解码,程序会自动跳过并尝试下一个文件

开发说明

模块分离

项目采用了模块化设计:
  • app.rs - 包含应用程序的核心逻辑,处理音乐播放、播放列表管理等
  • event.rs - 处理用户输入事件,包括键盘事件和终端设置
  • ui.rs - 负责渲染用户界面,包括播放状态、进度条、控制说明等
  • main.rs - 程序入口,协调各个模块

主要功能

  1. 音乐播放 - 使用 rodio 库实现音频播放
  1. 播放控制 - 支持播放、暂停、下一曲、上一曲
  1. 自动播放 - 歌曲播放完毕后自动播放下一首
  1. 随机播放 - 实现真正的随机播放,避免重复播放同一首歌
  1. 音量控制 - 支持精确的音量调节
  1. 播放列表 - 自动扫描 assets 目录下的音频文件

故障排除

常见问题

  1. 没有声音
      • 检查系统音量设置
      • 确保音频文件格式正确
      • 检查 assets/ 目录是否存在并包含音频文件
  1. 某些音频文件无法播放
      • 程序会自动跳过无法解码的文件
      • 尝试使用其他格式的音频文件
      • 确保文件没有损坏
  1. 播放进度不准确
      • 进度显示基于估算,可能与实际播放时间有差异
      • 这是正常现象,不影响播放功能
  1. 自动播放不工作
      • 确保有多首歌曲在播放列表中
      • 检查播放状态是否正确

音频文件建议

  • 使用标准音频格式(MP3、WAV、FLAC)
  • 避免使用损坏或格式不标准的文件
  • 文件名使用英文或中文,避免特殊字符
 
linux-desktopWLFI 盛大开幕: 加密市场开启新时代