- Add QR generation of the currently playing URL (macOS window / iOS sheet) - Encode channel metadata (name/type/group/logo) in the QR payload as compact JSON; fall back to a plain URL when the payload is too long for a reliably scannable QR - Scanning saves the entry into the local library with its channel metadata and starts playback; legacy plain-URL QR codes still work - Add iOS QR scanner sheet (AVCaptureMetadataOutput) so scanning is no longer macOS-only; both scanners share handleScannedCode - Add optional channel name / group fields to the Add URL dialog and thread group/logo through addURL/addItem into the library - Restore session (queue + position) on launch and save on quit for macOS, not just iOS - Bundle app icons: generate AppIcon.icns from the macOS iconset when missing, and compile Assets.xcassets into the iOS app
MiniPlayer
简洁多平台视频/音频播放器,支持 macOS、iPhone、iPad。
功能
- 播放大多数视频/音频格式 (MP4, MKV, AVI, MOV, MP3, FLAC, WAV, OGG, AAC 等)
- 支持 M3U8 流媒体播放
- 音轨切换
- 全屏播放
- 播放列表管理(拖拽排序、删除)
- 自动播放下一首
- 单曲循环 / 列表循环 / 不循环
- 快进快退 10 秒
- 本地文件 + URL 流媒体双入口
系统要求
- macOS 14+ (Sonoma)
- iOS / iPadOS 17+
- Xcode 15+
构建
# 安装 XcodeGen(如未安装)
brew install xcodegen
# 生成项目并打开
bash setup.sh
或在 Xcode 中:File → New → Project → Multiplatform → App,将 Sources/ 目录的文件添加进去。
快捷键
| 快捷键 | 功能 |
|---|---|
| Space | 播放/暂停 |
| → / ← | 快进/快退 10 秒 |
| ⌘→ / ⌘← | 下一个/上一个 |
| ⌘F | 全屏切换 |
| ESC | 退出全屏 |
架构
Sources/
├── MiniPlayerApp.swift # App 入口
├── ContentView.swift # 主布局 (NavigationSplitView)
├── PlayerView.swift # 视频显示 + 控制层
├── PlaylistView.swift # 播放列表侧边栏
├── PlayerEngine.swift # AVPlayer 播放引擎
├── PlayerLayerView.swift # 跨平台视频渲染层
└── Models.swift # 数据模型
- SwiftUI + AVFoundation
- 单一代码库,
#if os(iOS)/#if os(macOS)处理平台差异 - AVPlayerLayer 自定义渲染(比 VideoPlayer 更可控)
Description