需自行准备可用的 Ampache 或 Subsonic 服务器,App 本身不提供音乐内容;真机测试 CarPlay 和 Siri 需具备 com.apple.developer.playable-content 与 com.apple.developer.siri 权限的开发者证书,否则需清空 Amperfy/Amperfy.entitlements 中的条目;构建需 Xcode 26 与 Swift 6 环境
amperfy
BLeeEZGPL-3.0活跃维护一款 iOS/iPadOS/macOS 音乐播放客户端,可连接自建的 Ampache 或 Subsonic 服务器播放歌曲,适合想用 Apple 设备访问个人音乐库的人。
Amperfy is an iOS/iPadOS/macOS app to play songs from an Ampache or Subsonic server
git clone https://github.com/BLeeEZ/amperfy.git
cd amperfyREADME 未说明硬件要求,仅说明需要 Xcode 26 与 Swift 6 构建,运行平台为 iOS、iPadOS 和 macOS
用 Swift 写的 iOS/iPadOS/macOS 客户端,连接 Ampache 或 Subsonic 服务器播放音乐
一款 iOS/iPadOS/macOS 音乐播放客户端,可连接自建的 Ampache 或 Subsonic 服务器播放歌曲,适合想用 Apple 设备访问个人音乐库的人。
核心能力
- 支持 Ampache 与 Subsonic 两种服务器协议
- 多账号切换并支持离线模式播放
- 支持 CarPlay、Siri 命令与 App Intents
- 支持无缝播放、均衡器与 ReplayGain
- 支持音乐、播客、电台与 Scrobbling
容易踩的坑
- v2.1.1v2.1.1 Custom HTTP Headers, Autoplay, Instant Mix最新正式版2026-08-13 · 2026-08-13 15:06 UTC
Features
- Support custom HTTP headers per account
- Support autoplaying similar songs at the end of the play queue
- Add "Instant Mix" via the server API to request similar songs
- Support sharing songs
- Display radio station metadata in player info
- Always-on-top setting for the macOS mini player
- Clicking a lyric line will seek to that point in the song
- Seek directly on click (instead of click-and-drag) in the macOS player
Bug Fixes
- Fixed endless artwork downloads
- Fixed playing a song directly when clicked in the Home random songs section
- Fixed CarPlay displaying the album's song list instead of directly playing the album
Contributors
@jrmgx: seek directly on click (instead of click-and-drag) in the macOS mini player @thrandale: display radio station metadata in player info & clicking a lyric line will seek to that point in the song @elafargue: add "Instant Mix" via the server API to request similar songs @jesusjimsa: increased player artwork size @mikeliddle: always-on-top setting for the macOS mini player @jlandersen: improve player seek bar hit area @thisolivier: support sharing songs @RaulitoRS97: performance improvements @bmcwilliams96: fixed CarPlay displaying the album's song list instead of directly playing the album & support autoplaying similar songs at the end of the play queue @santiagorod92: support custom HTTP headers per account
Thank you very much for your contributions.
- v2.1.0v2.1.0 Multi Account, Home tab, CarPlay & AppIntent rework2026-03-19 · 2026-03-19 07:10 UTC
查看更新说明
Features
- Multi account support
- Configurable Home tab
- Reworked SiriShortcuts and Intents
- Reworked CarPlay interface
- Optional song rating display
- Siri support for radios via voice command
- Support radios in PlayID and SearchAndPlay intent
- New setting to optionally save and use song playback progress
- Library resync and logout can be done without restart
- Volume slider available in iOS and iPadOS
BugFixes
- Fixed mini player title tear
- Fixed NowPlayingInfo when player is paused
- Fixed macOS crash in fullscreen when selecting the searchbar
- Fixed cached scrobble times for Subsonic API
Contributors
@DCM4711: Display song rating @aaravchour: Add multiple audio visualizer @el-tiuri: Fixed cached scrobble times for Subsonic API @Exceen: Add section index titles to artists
Thank you very much for your contributions.
Development
Update AudioStreaming to support OGG and FLAC gapless playback
- v2.0.0v2.0.0 Liquid Glass, Equalizer, Replay Gain2025-11-10 · 2025-11-10 19:50 UTC
查看更新说明
Features
- Adaptation to Liquid Glass
- Equalizer support
- Support for replay gain received from server
- Settings: configure transcoding format separately for WiFi and Cellular
- Added pause quick action for music and podcast playback
- Added audio visualizer and spectrum analyzer in player view
- Display bitrate and audio format of the currently playing track in player view
- Settings: configure light/dark mode
- Songs: sort by "Date Added" for Subsonic API
BugFixes
- Fixed shuffle algorithm issue
- Fixed crash on playlist update
- Fixed crash when clicking "Random" on an empty radios list
- Fixed scrobble timer
- Fixed favorite swipe action color
Contributors
@jarrett-m: Configure transcoding format separately for WiFi and Cellular @Schlaubischlump: Supported to adopt to macOS26 @almottier: Added pause quick action for music and podcast playback @ericchianti: Songs: sort by "Date Added" for subsonic API @rossbates: Fixed scrobble timer @simonwehle: Fixed favourite swipe action color
Thank you very much for your contributions.
Development
- Raise deployment target to iOS26 / iPadOS26 / macOS26
- Use Icon Composer
- Storyboard: refactor and reduce view controllers
- v1.2.3v1.2.3 Radios, Gapless Playback, Performance, enhanced Playlists2025-05-10 · 2025-05-10 18:36 UTC
查看更新说明
Features
- Radios: add support for Ampache API and Subsonic API
- Player: support gapless playback for appropriate media file formats
- Performance: reduce CPU consumption for API requests and player
- macOS: add volume slider
- Artworks: downloaded artworks can be deleted in Settings
- Playlists: add multiple library element to playlist via edit
- Playlists: delete multiple songs at once from playlist
- Playlists: add songs to multiple playlists at once
- Playlists: show alert when duplicates are about to get added
- Siri-Shortcut: add "Play Random Songs" intent
- Tables: align columns and add ellipsis to playables
- Cache: display alert before deleting cache
- Transcoding: add option to let server decide which codec to use
- macOS: restore window size, add edit and help menu
- macOS: play songs via double click
- macOS: delete songs from player queue via hover "X"
- Player: improved error handling
- Artworks: create light and dark mode versions of default artworks
- Player: hide player mode change button if user hides podcasts from library category list
- X-Callback-URL Docu: add example copy button
- Player: reduce button count (move buttons inside options menu)
- General: multiple performance improvements
BugFixes
- Album: fix queuing albums sorted by track number
- PopupPlayer: fix moving elements after App opening
- Siri-Shortcut: fix failing play request due to long response times (fetch only playlist before play)
- Subsonic API: handle 404 status codes
- Subsonic API: fix empty albums due to missing isDir attribute
- Album collection: fix clipping title label
- Swipe & Preview: refresh cell when favorite and cache is changed
- macOS: fix reordering swipe actions
- Collections: fix duration overflow
- Preview: favorite and rating was interactable when in offline mode
- macOS: resizing window distort Albums collection
- Preview: fix detail size
Contributors
Thank you for your contributions:
@Schlaubischlump: fix resizing the Albums collection, fix reordering swipe actions, restore macOS window size @cescofry: add "Play Random Songs" to Siri-Shortcut, fix time slider thumb image, add copy button to Callback-URL Docu @vincentcayadi: simplified bitrate handling @henry-2025: fix hovering track numbers @IH0kN3m: provide fix for Subsonic API @bilogic: fixed spelling
Development
- Adapt code base to Swift 6
- SwiftFormat: use SwiftFormat to ensure code styling
- Assets: podcast icon is available as SFSymbol
- v1.2.2v1.2.2 macOS Catalyst support, Lyrics2024-12-02 · 2024-12-02 07:12 UTC
查看更新说明
Features
- macOS Catalyst: add platform support (@Schlaubischlump)
- Lyrics (subsonic only): unsynced and synced lyrics are supported
- Theme: add theme colours (@danielepintore)
- Artists: support album artists filter
- Albums: display as collection (grid size is adjustable) or as table
- Sync: initial sync is skippable
- CarPlay: add "Cached" tab
- CarPlay: trigger artwork download and display on completion
- Songs: sort by starred date sort setting for favourite songs (Subsonic only) (@danielepintore)
- Songs: press to play songs add next songs to queue too
- OfflineMode: notify user at each start that Offline Mode is active
- SleepTimer: add option for 2 and 4 hours
- X-Callback: add action for rating and favourite
- Siri: log request and response in EventLogger
BugFixes
- Siri Intent: fetch elements before play
- Scrobble: cache failed sync scrobbles too
- Disabling shuffle mode in setting does not work everywhere
- Player: song progress wasn't kept when App crashed or mode changed
- Player: audio engine crash can be fixed by switching mode or play next song instead of App restart
Contributors
Thank you for your contributions:
- @Schlaubischlump thank you for the effort to create a separate macOS Catalyst design
- @danielepintore
- @JLO64
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Amperfy
Basics
Amperfy is an iOS/iPadOS/macOS app written in Swift to interact with an Ampache or Subsonic server.
iOS
macOS
Features
- Multi account
- Offline mode
- CarPlay
- Gapless playback for appropriate media file formats
- Music, Podcast and Radio support
- Siri play media command, Siri Shortcuts and App Intents
- Equalizer
- Replay gain
- Sleep timer
- 5 star song rating
- Favorite song
- Sleep Timer
- Scrobbling
Requirements
- Xcode 26, Swift 6
Getting Started
- Check out the latest version of the project:
git clone https://github.com/BLeeEZ/amperfy.git
cd amperfy
-
Open the
Amperfy.xcodeprojfile. -
Build and run the "Amperfy" scheme
Real device testing: Amperfy has Apple CarPlay and Siri support. To test it on a real device a developer certificate with granted access to
com.apple.developer.playable-contentandcom.apple.developer.siriis required. To test Amperfy without Apple CarPlay and Siri clear all entries inAmperfy/Amperfy.entitlements.
Beta test releases
For more information, and to participate in the public beta releases, please visit Amperfy Beta.
Contribution
Pull requests are always welcome. Please execute AmperfyKitTests to ensure code quality. Running tests will trigger SwiftFormat to apply the Google Swift Style Guide, as configured by Google-SwiftFormat-Config. You can also apply the code style manually by executing ./BuildTools/applyFormat.sh.
Attributions
- AudioStreaming by Dimitris C. is licensed under MIT License
- MarqueeLabel by Charles Powell is licensed under MIT License
- NotificationBanner by Dalton Hinterscher is licensed under MIT License
- ID3TagEditor by Fabrizio Duroni is licensed under MIT License
- CoreDataMigrationRevised-Example by William Boles is licensed under MIT License
- VYPlayIndicator by Dennis Oberhoff is licensed under MIT License
- CallbackURLKit by Eric Marchand is licensed under MIT License
- DominantColors by Den Dmitriev is licensed under MIT License
- AudioVisualizerKit by Takuto NAKAMURA (Kyome) is licensed under MIT License
- Alamofire by Alamofire is licensed under MIT License
- Ifrit by Andrii Vynnychenko is licensed under MIT License
- swift-collections by Apple is licensed under Apache License 2.0
- iOS-swiftUI-spotify-equalizer by urvi koladiya is licensed under MIT License
Amperfy license: GPLv3
Special thanks: Dirk Hildebrand