本地音频文件处理

ncm 的实现思路

ncm 面向用户本机已有文件的整理场景。开发重点不是在线音乐服务,而是把拖拽导入、队列状态、输出目录、错误提示和日志记录做清楚。

ncm 中文预览图

需求拆解

用户选择本地文件或文件夹后,应用负责生成队列、显示进度、处理失败项,并把结果保存到用户授权的目录。

技术方案

界面使用 SwiftUI,窗口和系统能力结合 AppKit;本地转换流程使用随应用打包的 ffmpeg,并通过日志记录失败原因。

实现边界

只处理用户主动选择且有合法使用权的本地文件,不提供在线下载、账号抓取、曲库采集或资源分发。

主要模块

  • 导入层:支持拖拽和文件选择,进入队列前做文件类型与可读性检查。
  • 任务层:维护等待、运行、完成、失败、跳过、取消等状态,保证单个失败不影响队列继续。
  • 输出层:由用户显式选择输出目录,处理重名、权限和打开 Finder 等本地操作。
  • 诊断层:记录结构化日志,方便定位文件损坏、权限不足或转换失败。
ncm 批量队列预览 ncm 设置与状态预览