Skip to content

martjay/Multi-File-Player

Repository files navigation

Multi-File Player 多文件播放器

这是一个基于 Electron 开发的多文件媒体播放器,支持同时播放多个音频和视频文件,并提供丰富的控制功能。

功能特点

  1. 多文件同时播放:可以添加多个音频或视频文件同时播放
  2. 智能频谱显示
    • 启动时显示空白频谱
    • 载入音频后自动显示所有音频的混合频谱
    • 支持独奏模式:只显示被独奏音频的频谱
    • 支持静音处理:忽略被静音音频的频谱
    • 实时更新:添加/删除音频、切换独奏/静音状态时自动更新
  3. 单文件控制
    • 播放/暂停控制
    • 音量调节
    • 独奏模式(Solo)
    • 静音控制
    • 删除文件
  4. 播放列表管理
    • 保存播放列表到 JSON 文件
    • 从 JSON 文件加载播放列表
  5. 总体音量控制:可以调节所有文件的整体音量
  6. 循环播放:支持循环播放功能,默认开启
  7. 清空列表:可以一键清空播放列表和频谱显示
  8. 总体进度控制:可以调节整个播放列表的播放进度
  9. 拖放支持:支持直接拖放文件到播放器窗口添加文件

安装和运行

  1. 克隆或下载此项目
  2. 进入项目目录
  3. 安装依赖:
    npm install
    
  4. 启动应用:
    npm start
    

构建为可执行文件

方法一:使用构建脚本

项目提供了几种构建脚本,可以一键打包为可执行文件:

  1. simple-build.bat - Windows批处理脚本(选择构建目标)
  2. build.ps1 - PowerShell 脚本(选择构建目标)
  3. build-mac.sh - macOS/Linux shell 脚本

方法二:使用 npm 命令

  1. 安装依赖:

    npm install
    
  2. 构建项目:

    # 仅构建 Windows 版本
    npm run dist
    
    # 仅构建 macOS 版本
    npm run dist-mac
    
    # 构建所有平台版本
    npm run dist-all
    

构建完成的可执行文件将位于 dist 目录中。

跨平台构建说明

本项目使用 Electron 和 electron-builder,可以构建跨平台的应用程序:

  • Windows: .exe 安装程序和 .zip 便携版本
  • macOS: .dmg 磁盘映像和 .zip 压缩包
  • Linux: AppImage.deb

注意:

  1. 要构建 macOS 应用,您需要在 macOS 系统上运行构建命令
  2. 要构建 Linux 应用,您需要在 Linux 系统上运行构建命令
  3. Windows 应用可以在任何支持的系统上构建

自定义图标

为了构建带有自定义图标的安装程序,请在 build 目录中放置平台相关的图标文件:

  • Windows: icon.ico
  • macOS: icon.icns
  • Linux: icon.png (512x512 pixels recommended)

使用说明

添加文件

  1. 点击"添加文件"按钮,选择一个或多个音频或视频文件添加到播放列表
  2. 或者直接将文件拖放到播放器窗口

播放控制

  • 每个文件都有独立的播放/暂停按钮和音量控制滑块
  • 可以通过"全部播放"按钮同时播放所有文件
  • 可以通过"全部暂停"按钮暂停所有正在播放的文件

频谱显示

  • 启动状态:应用启动时显示空白频谱
  • 载入音频:添加音频文件后自动分析并显示混合频谱
  • 独奏模式:点击音频项的"S"按钮启用独奏,只显示该音频的频谱
  • 静音处理:点击音频项的"🔇"按钮静音,该音频不会参与频谱混合
  • 实时更新:频谱会根据播放状态、独奏状态、静音状态实时更新

音量控制

  • 每个文件有独立的音量控制滑块
  • 顶部的"总体音量"滑块可以调节所有文件的整体音量

进度控制

  • 顶部的"总体进度"滑块可以调节所有正在播放文件的进度

播放列表管理

  • 点击"保存列表"按钮将当前播放列表保存为 JSON 文件
  • 点击"加载列表"按钮从 JSON 文件加载播放列表

删除文件

点击文件条目右侧的"✖"按钮可以将该文件从播放列表中移除。

清空列表

点击"清空列表"按钮可以清空整个播放列表。

技术实现

  • 使用 Electron 构建跨平台桌面应用
  • 使用 HTML5 的 <audio><video> 元素播放媒体文件
  • 通过 IPC 通信实现主进程和渲染进程间的数据交换
  • 使用原生文件对话框进行文件选择和保存操作
  • 频谱分析技术
    • 使用 Web Audio API 的 AudioContext.decodeAudioData() 解码音频文件
    • 采用 RMS (Root Mean Square) 算法计算音频能量分布
    • 生成256个频段的归一化频谱数据 (0-1范围)
    • 使用 wavesurfer.js 库渲染柱状频谱图
    • 支持多音频混合频谱计算和实时更新

支持的媒体格式

音频格式:

  • MP3
  • WAV
  • OGG

视频格式:

  • MP4
  • WebM
  • MOV
  • AVI
  • WMV

开发和定制

此项目结构简单清晰,易于扩展和定制:

  • main.js - Electron 主进程文件
  • index.html - 应用主界面
  • style.css - 样式文件
  • renderer.js - 渲染进程逻辑

可以根据需要添加更多功能,如:

  • 播放进度控制
  • 更多媒体格式支持
  • 播放模式(顺序播放、随机播放等)
  • 快捷键支持
  • 频谱功能扩展
    • 实时频谱分析(FFT变换)
    • 频谱颜色主题自定义
    • 频谱动画效果
    • 频谱数据导出功能
    • 多频谱视图(时域、频域、3D等)

故障排除

构建脚本闪退问题

如果双击批处理文件后出现闪退,请尝试以下解决方案:

  1. 使用 PowerShell 脚本: 右键点击 build.ps1 文件,选择"使用 PowerShell 运行"

  2. 以管理员身份运行: 右键点击批处理文件,选择"以管理员身份运行"

  3. 从命令行运行: 打开命令提示符,导航到项目目录,然后运行:

    simple-build.bat
    
  4. 检查 Node.js 和 npm: 确保已正确安装 Node.js 和 npm,并且它们已添加到系统 PATH 环境变量中

跨平台构建问题

  1. macOS 构建

    • 只能在 macOS 系统上构建 macOS 应用
    • 需要 Xcode 命令行工具
  2. Linux 构建

    • 只能在 Linux 系统上构建 Linux 应用
    • 可能需要安装额外的构建依赖
  3. 代码签名

    • 发布应用时可能需要代码签名证书
    • 有关代码签名的详细信息,请参阅 Electron 和各平台的文档

频谱显示问题

  1. 频谱不显示

    • 确保音频文件格式受支持(MP3、WAV、OGG等)
    • 检查浏览器控制台是否有错误信息
    • 尝试重新添加音频文件
  2. 频谱显示异常

    • 清空播放列表后重新添加音频文件
    • 检查音频文件是否损坏
    • 重启应用程序
  3. 频谱更新延迟

    • 频谱分析是异步进行的,大文件可能需要几秒钟
    • 查看控制台日志了解分析进度

About

Multi-File Player 多文件音频同步播放器

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published