Skip to content

Repository files navigation

AirPlay — FM 广播发射控制平台

license release stars language last commit platform

一套通过 Web 界面控制无线电(FM)广播发射的平台:管理音频、编排播放清单、实时调节音量/EQ,并把声音发射到任意 FM 收音机。

播放器

项目简介

AirPlay 让一台小主机(Linux 盒子或树莓派)化身低成本的 FM 广播发射站。它把音频文件通过调频无线电波广播出去,任何普通的 FM 收音机、车载收音机或手机 FM,都能调到对应频率收听。

它解决的是"用最简单的方式,把本地的声音播到整个空间"这件事:

  • 无需专门的广播硬件——插上一个几十元的 USB FM 发射器,或直接用树莓派的 GPIO 引脚发射即可。
  • 全程网页操作——不需要装任何客户端,浏览器打开即用。
  • 可远程管理——部署在局域网内,随时添加音乐、调整节目、改变频率。

⚠️ 本项目名中的 "AirPlay" 指通过无线电波(FM)广播发射,与 Apple 的 AirPlay 无线流媒体协议无关。

应用场景

AirPlay 适合需要"把声音播给一群用收音机听的人"的场景:

  • 校园 / 社区广播:教室、宿舍、园区里架一台盒子,学生用收音机即可收听节目,无需大规模布线。
  • 车载收听:停车场、车队、洗车店、加油站等场景,向经过的车内收音机广播通知或音乐。
  • 零售 / 餐饮:门店、超市、餐厅、咖啡馆,把背景音乐、促销播报广播给顾客的收音机。
  • 活动 / 展会:临时会场、展会、集市,快速搭建一套本地广播,覆盖有限范围的听众。
  • DIY 无线电爱好者:用树莓派 + PiFmRds 体验 FM 发射与 RDS 电台信息,学习无线电原理。

核心功能

功能 说明
📂 音频文件管理 扫描音乐目录、手动上传,支持 mp3 / ape / flac / wav / m4a / ogg 等常见格式
🎵 播放清单编排 拖拽排序清单与曲目,组合不同节目(如早间新闻、午后音乐)
📻 FM 广播发射 选择广播方式与频率,把音频实时发射到 FM 波段
🎚️ 音量 / EQ 三段 EQ(低/中/高)与音量调节,播出前整形声音
📡 RDS 电台信息 广播电台台名(PS)与电台文字(RT),兼容车载收音机显示
🔄 播放模式 顺序 / 随机、循环(单曲 / 全部)、清单播完自动切换
📊 实时频谱 随音频节奏跳动的频谱动画与节拍可视化,观赏性强

两种广播方式

AirPlay 支持两种发射路径,在系统设置里一键切换:

系统设置

  1. ALSA · USB FM 发射器——USB 发射器插入后即是一个 ALSA 音频设备,选中它即完成发射。频率仅作展示,发射频点由设备自身决定。
  2. PiFmRds · 树莓派 GPIO——利用树莓派的 PWM 引脚直接发射 FM,并支持 RDS(台名 / 电台文字),频率真正生效。

无论哪种方式,只要你有一台能收到 FM 的设备,调到对应频率就能收听。

其他界面

音频文件管理 歌单管理

技术亮点(简述)

  • 单二进制部署:前端(Vue 3)打包后嵌入 Go 后端,一个可执行文件即完整系统,免安装依赖。
  • 实时推送:播放状态、频谱、进度经 SSE 实时推送到浏览器,无需刷新。
  • 跨平台播放引擎:Linux 下用 ffmpeg + aplay/amixer 真实播放;非 Linux(开发机)自动降级为模拟播放,便于本地开发。
  • 配置自管理:音乐目录、设备、音量、EQ、播放模式等全部存入系统配置表,网页内即可修改。

快速开始

# 前端开发
cd frontend && npm install && npm run dev

# 后端开发(SQLite 依赖 cgo,请在 WSL 中运行)
cd /mnt/d/coder/Go/src/airplay && go run ./cmd/airplay.go -dev

# 构建单二进制(amd64)
make build

# 构建树莓派 arm64(前端 + arm64)
make build-arm

目录结构(简述)

airplay/
├─ cmd/airplay.go          # 入口
├─ internal/
│  ├─ player/              # 跨平台播放引擎(linux + stub)
│  ├─ api/                 # HTTP 接口
│  ├─ impl/service/        # 播放调度器 + 业务
│  └─ impl/store/          # 数据读写 + 配置
├─ frontend/               # Vue3 前端
├─ html/                   # 内嵌前端构建产物
└─ doc/开发计划.md

License

LICENSE

About

基于 Vue3 + Go 的 USB FM 发射器 Web 控制台。用于管理音频文件、切换系统音频设备及调节音量,实现广播信号的精准发射控制。

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages