爱意满满的作品展示区。
andyiac

做了一个 iOS 本地音乐播放器: Wi-Fi 拖歌、FLAC/DSD、10 段参数 EQ ,发帖送一波永久 pro 送码

  •  1
     
  •   andyiac ·
    andyiac · 1 day ago via Android · 1880 views

    利益相关:开发者本人。免费下载,Pro 国区 一次性买断,没有订阅、没有广告。发在分享创造,主要是想收真实反馈,不是求五星。

    一、为什么做

    我自己的曲库在电脑和 NAS 上,几千首,FLAC 为主,还有一些十几年前 rip 的 MP3 。用 iPhone 听这些歌一直很别扭:iTunes/Finder 同步看运气,Wi-Fi 同步经常卡;流媒体上要么没有版本,要么今天有明天没;试过几个本地播放器,传歌、曲库、播放总有一块是凑合的。

    后来想明白了,我要的东西其实很小:电脑浏览器把歌拖进去,手机上打开就能听,不要账号,不要云,不要订阅。于是就自己写了离音( Unstream )。

    二、传歌

    • App 里开「 Wi-Fi 传歌」,同一局域网下用电脑浏览器打开 App 显示的地址;
    • 文件和整个文件夹都可以直接拖进去,批量上传,重名自动跳过;
    • 网页端能浏览目录、搜索、按名称/大小/类型排序、试听、重命名、移动、删除;
    • 可以设上传密码(存 Keychain ),防止同网段的人往你手机里塞东西;
    • 服务只在局域网内跑,IPv6 监听也收在 loopback ,不开公网。

    三、曲库和播放

    • 格式:MP3 、M4A/MP4 、AAC 、ALAC ( m4a/caf )、WAV 、AIFF/AIF 、CAF 、FLAC 、OGG Vorbis 、Opus 、MP1/MP2 ,以及 DSD 的 DSF/DFF ( Pro )。APE 不支持,DST 压缩的 DFF 也不支持。
    • 曲库:搜索、A-Z 索引、排序、收藏、歌单、艺术家、文件夹。歌单存在 SQLite 里,支持拖拽排序。
    • 关联文件夹:可以把「文件」 App 里的文件夹链进来,原地引用不复制; iCloud Drive 里没下载的,点播放会先按需下载。
    • 文件改名或移动后,歌单按内容重新关联,不会整条失效。
    • AirDrop 、「用其他应用打开」、文件 App 都能批量导入; Documents 目录有外部改动时列表会刷新。
    • 后台播放、锁屏/控制中心、主屏和锁屏 Widget ( iOS 17+ 可以直接播放/暂停/切歌)。

    四、声音

    • 10 段参数 EQ:每段可调中心频率、增益、Q ,带 Preamp 、9 个预设和自定义曲线。免费能实时调,保存曲线和部分预设要 Pro 。
    • ReplayGain:读 ID3v2 TXXX 和 Vorbis Comment 的 track/album gain ,支持关/单曲/专辑,带防削波。
    • DSD:DSF/DFF 转 24-bit PCM ,实时流式解码,可拖进度( Pro )。
    • 蓝牙和 AirPlay 会协商采样率,尽量避免无谓重采样。
    • 播放页点格式徽标,能看到完整信号链:文件 → 解码 → 处理 → 输出,以及哪一步在重采样。编码按文件内容识别,不只看扩展名,AAC/ALAC/MP2 不会标错。
    • 歌词:.lrc 侧载,支持增强型 LRC 的逐字高亮,也能读内嵌歌词;锁屏和 Widget 显示当前行,也可以悬浮在封面上。

    五、外观和其它

    • 亮/暗/纯黑、强调色、多种唱片样式、默认封面、App 图标。
    • iPhone + iPad ,iOS 15 起,界面 16 种语言(含简繁中文)。
    • 安装包 12 MB 。

    六、技术栈

    • UIKit ,不是 SwiftUI 。要支持 iOS 15 ,而且播放页的布局和手势需要比较细的控制。
    • AVAudioEngine + AVAudioUnitEQ + AVAudioUnitTimePitch ;原生格式走 Core Audio ,加载失败回退 AVAudioPlayer/AVPlayer 。
    • OGG/Opus 用自编译的 libogg/libvorbis/libopus XCFramework ; MP1/MP2 用 vendored minimp3 软解; DSD 是自己写的 parser + PCM 转码。
    • 歌单用 SQLite (直接 C API ),设置走 UserDefaults ,上传密码和 Pro 状态放 Keychain 。
    • 内置 HTTP 服务基于 GCDWebServer ,patch 了 IPv6 只监听 loopback 。
    • 没有第三方分析或崩溃 SDK 。

    七、和同类怎么选

    不是来吊打谁的,取舍不同: 不是来吊打谁的,取舍不同:

    • VLC:万能,但它是播放器思维,不是曲库思维;传歌和歌单不是重点。
    • FileBrowser/Documents:文件管理强,播放是附属。
    • Doppler/Evermusic:设计和生态更成熟,但更偏 Apple Music 导入、云和订阅;我想要不登录、不碰云。
    • foobar2000 mobile:够硬核,但 UI 和传歌体验我不适应。

    如果你要的是「打开就是我的歌,传歌不用学」,这个方向大概对;如果你要 CarPlay 、网盘直连、自动刮削封面歌词,它现在还不够。

    八、不足

    • 暂时没有 CarPlay ,没有 Android 。
    • 不会自动匹配歌词和封面,要靠文件自带元数据或 .lrc 。
    • 没有 WebDAV/网盘直连,没有云同步。
    • Wi-Fi 上传要手动输地址,还没做扫码。
    • 睡眠定时、变速、保存 EQ 曲线、DSD 、部分主题/图标/唱片样式是 Pro 。
    • 闭源,个人项目,代码还没整理到能开源的程度。
    • 一个人做,更新节奏不快。

    九、收费

    免费下载。Pro 国区 ¥68 ,一次性买断,没有订阅、没有会员等级、没有广告。Pro 解锁 DSD 、EQ 曲线保存、0.75–2× 变速、睡眠定时、部分唱片样式/主题/图标、自定义封面图。

    十、想听的意见

    1. 传歌这一步,你现在的 workaround 是什么?除了扫码和手输 IP ,还有更顺的方案吗?
    2. 本地曲库你更在意「管理」还是「播放」?我现在两边都做了一点,可能都不够深。
    3. 有没有哪个格式/编码是你必须有、但我漏了的?
    4. 睡眠定时和变速放在 Pro 里,我自己也犹豫。你觉得这个拆法合理吗?

    App Store 国区: https://apps.apple.com/cn/app/id6767066746 美区: https://apps.apple.com/us/app/id6767066746 搜「离音」或「 Unstream 」也可以。

    截图我放在下面:传歌页 / 曲库 / 播放页 / EQ / 信号链。

    送十个码,大家轻喷,尽量回。

    4JLX8K3WM46T37N8R8
    X43R7EP7MKJHLLK73T
    MLRRPNPNEE3LMRNNPF
    RJJXJLYM46HK8LNK3W
    E6FM3L78K3MLJ6K8EW
    6YXXTY3R4JMXFWYJAP
    JHRHFWJKN84R7XNAKJ
    7EJFMYPJELFP3JWMJE
    86KNRT6JHWR6PMAPPT
    P8WEY8JFRXLYT34N6K
    

    https://www.v2ex.com/i/U8NEgC4k.webp https://www.v2ex.com/i/ohLm38k1.webp https://www.v2ex.com/i/Tk8uG25d.webp https://www.v2ex.com/i/XPTS29Hy.webp https://www.v2ex.com/i/7qS0DN8i.webp https://www.v2ex.com/i/vjT2ZSeZ.webp https://www.v2ex.com/i/6pBrSfLa.webp https://www.v2ex.com/i/xdtDy6T8.webp https://www.v2ex.com/i/45mgehz6.webp https://www.v2ex.com/i/3q9k3TR1.webp

    Supplement 1  ·  23h 11m ago
    没领到码的进群找小助手领取


    v2 好像不支持 webp 我又重新上传了一次截图










    27 replies  •  2026-11-05 22:43:15 +08:00
    emberzhang
    emberzhang
    1 day ago❤️1
    1
    86KNRT6JHWR6PMAPPT 用了一个谢谢。我目前用 plex+plexamp 离线。但除了 plexamp 好像其他 app 都不支持把音乐文件全部离线到本地
    saimax
    saimax
    1 day ago via iPhone
    2
    来晚了 求个码 谢谢

    c2NvdHR1azIwMjBAZ21haWwuY29t
    wagag
    wagag
    1 day ago via iPhone
    3
    eHU2MDI3MTVAZ21haWwuY29t
    求个码,谢谢了
    LianAn
    LianAn
    1 day ago
    4
    没有了,求个码,谢谢大佬
    bGVvbmFyZG93aXRodUBnbWFpbC5jb20=
    bizwenbo
    bizwenbo
    1 day ago
    5
    Ym8uaHN1QG91dGxvb2suY29t
    来晚了,大佬求码
    ganzhen
    ganzhen
    1 day ago
    6
    感谢 MTQyNTgxMzIxMUAxMzkuY29t
    error
    error
    1 day ago via iPhone
    7
    eGluY2h5QDE2My5jb20= 谢谢老板
    jinxing
    jinxing
    1 day ago via iPhone
    8
    NDQ0ODMzMEBnbWFpbC5jb20= 谢谢老板
    vopfly
    vopfly
    1 day ago
    9
    aHJqbGFuQHFxLmNvbQ== 求个码,正好有需求
    psm
    psm
    1 day ago
    10
    求个码

    邮箱:cGFuc2hpbWluMTExQDE2My5jb20=

    谢谢~
    congratulations
    11
    求个码 邮箱 b25la2luZ25xdWVlbkBnbWFpbC5jb20=
    Shum1n
    Shum1n
    1 day ago
    12
    求个码, 感谢 OP
    NTQwODQyOTMwQHFxLmNvbQ==
    orange804072060
    13
    求个码,谢谢
    b3JhbmdlODA0MDcyMDYwQGdtYWlsLmNvbQ==
    NomiTang
    NomiTang
    1 day ago
    14
    Z3VhbmppMDFAZ21haWwuY29t
    求个码,感谢
    oliverlin96
    oliverlin96
    1 day ago
    15
    大佬给个码 感谢 eWFodWxjY0B5YWhvby5jb20=
    javaDo
    javaDo
    1 day ago
    16
    大佬给个码 感谢 MTgwMjQ2NDJAcXEuY29t
    andyiac
    andyiac
    OP
    1 day ago via Android
    17
    上面的码已经领完了 大家加群找离音小助手领码哈

    andyiac
    andyiac
    OP
    1 day ago via Android
    18
    发现 v2 自己图库的图没渲染出来重新上传了一个

    polarwolf
    polarwolf
    1 day ago❤️1
    19
    1 、传歌这一步,你现在的 workaround 是什么?除了扫码和手输 IP ,还有更顺的方案吗?
    做个类似 pairdrop 的网页发现服务?或者浏览器插件

    2 、本地曲库你更在意「管理」还是「播放」?我现在两边都做了一点,可能都不够深。
    我偏向管理,这块做的优秀的 app 比较少

    3 、有没有哪个格式/编码是你必须有、但我漏了的?
    ape ,如果是授权原因那也没办法了,但是原来很多镜像是 ape+cue

    4 、睡眠定时和变速放在 Pro 里,我自己也犹豫。你觉得这个拆法合理吗?
    睡眠定时算常用功能,砍部分放 pro 比直接全砍更合适吧,比如把自定义时长丢 pro
    变速放 pro 影响比较小,毕竟变速更多是听书之类的才会有需要
    ARs6371
    ARs6371
    23h 8m ago
    20
    NTUwNTAzODExQHFxLmNvbQ==
    求个码,感谢大佬
    andyiac
    andyiac
    OP
    23h 7m ago via Android
    21
    @emberzhang 全部离线到本地是啥意思,音乐文件本身是需要自己下载收集的,离音只是一个本地音乐播放器
    andyiac
    andyiac
    OP
    23h 6m ago via Android
    22
    @ARs6371
    @javaDo
    @oliverlin96
    @NomiTang
    @orange804072060
    @Shum1n
    @congratulations
    @psm
    @vopfly

    各位扫码进群找小助手领码哈
    emberzhang
    emberzhang
    23h 1m ago via iPhone❤️1
    23
    @andyiac #21 自己搭的 plex 服务,但是音乐 app 大多只支持自动缓存,不能强制把音乐离线下到本地。
    视频也类似,除了 infuse 其他播放器基本也不支持把视频离线到设备本地
    michaelzxp
    michaelzxp
    21h 9m ago
    24
    一直在玩 hifi 看到有 ios 的播放器心喜,申请一个 Pro 码,感谢楼主

    [email protected]
    andyiac
    andyiac
    OP
    20h 16m ago
    25
    @michaelzxp #24 hello 进群找小助手要码哈
    eggt
    eggt
    18h 48m ago via iPhone
    26
    ZmF0b3hzQGljbG91ZC5jb20= 求个码吧
    andyiac
    andyiac
    OP
    18h 46m ago
    27
    @eggt #26 hello 进群找找小助手要码哈
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4453 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 66ms · UTC 09:29 · PVG 17:29 · LAX 01:29 · JFK 04:29
    ♥ Do have faith in what you're doing.