yumoqing dd64a21404 feat: QR code for current media with channel info, cross-platform
- 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
2026-10-04 12:07:00 +08:00

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
No description provided
Readme 168 MiB