V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Sharcle
V2EX  ›  Apple

iPhone 自带音乐 App 的神奇切歌 Bug

  •  
  •   Sharcle · 2022-10-25 21:13:27 +08:00 · 953 次点击
    这是一个创建于 778 天前的主题,其中的信息可能已经有所发展或是发生改变。

    OP 从 iPod 时代养成了用 iTunes 传歌到移动设备的习惯,所以现在依然会用系统自带的音乐 App 放歌。升级 iOS16.1 之后突然发现昨天用无线局域网传进来的两张专辑有一个神奇的 Bug:
    只要一首歌播放到最后的十几秒,就会被强行切到下一首歌。与此同时 UI 仍然显示正在播放上一首歌的最后十几秒。如果这时候手动切到下一首,音乐会在和正常切歌一样的短暂停顿后继续放下去,UI 也会切换到下一首歌相应的播放位置(而不是从头开始)。如果什么都不做等待最后十几秒走完,歌曲会无缝继续播放,UI 会直接切换到下一首歌已经播放了十几秒的状态。
    这个 Bug 只出现在 OP 昨晚用无线局域网传输的两张专辑上。这两张专辑里的每一首歌都会触发这个 Bug 。而昨天稍晚是用数据线传输的歌曲则无此问题。

    9 条回复    2022-10-26 07:45:10 +08:00
    wyd011011daniel
        1
    wyd011011daniel  
       2022-10-25 21:15:52 +08:00
    会不会是歌没传完
    Sharcle
        2
    Sharcle  
    OP
       2022-10-25 21:22:21 +08:00 via iPhone
    @wyd011011daniel 如果手动把进度拉到一首歌的最后十几秒,大概率不触发这个 Bug ,会正常把歌放完。
    Sharcle
        3
    Sharcle  
    OP
       2022-10-25 21:24:47 +08:00 via iPhone
    @Sharcle 这个特性让我一度怀疑人生。因为两张都是新专辑,曲目我还不太熟悉。听着听着突然被切歌,打开 App 往回倒几秒再放却又正常播放了。不禁让我怀疑究竟是我的脑子还是这个世界出了问题。
    Sharcle
        4
    Sharcle  
    OP
       2022-10-25 21:49:53 +08:00 via iPhone
    我刚刚甚至在 Mac 的音乐 App 上复现了一次……并且找到了一个规律。在 Mac 上,如果使用扬声器播放就不会触发这个 Bug ,而使用 AirPods 就会触发这个 Bug 。
    Sharcle
        5
    Sharcle  
    OP
       2022-10-25 21:58:59 +08:00 via iPhone
    现在还不能排除我音源的问题。但是 Mac 的这个表现也太匪夷所思了。
    Sharcle
        6
    Sharcle  
    OP
       2022-10-25 22:15:00 +08:00 via iPhone
    定位到问题了。FLAC 用 XLD 转换成 ALAC 的过程中会莫名其妙地短上十几秒。把 ALAC 拿到 VOX 里播放,列表里显示时长有 3:22 ,但播放进度条只显示 3:05 。这两个时间对不上。
    Sharcle
        7
    Sharcle  
    OP
       2022-10-25 22:22:02 +08:00 via iPhone
    初步结论:XLD 在转换 24bit 48kHz 的 FLAC 为 ALAC 的时候,会出现音频时长错误的 Bug
    Sharcle
        8
    Sharcle  
    OP
       2022-10-25 23:36:33 +08:00
    艹,这下真的破案了。不是 XLD 的问题,甚至也不能算是 iOS 的 Bug 。

    iTunes Plus AAC 内嵌了一个叫做 ITUNSMPB 的 Tag ,里面记录了 Encoder Delay 、Padding 以及 Original Sample Count 的信息。这个信息和采样率以及文件长度都有关系。iTunes 可以用这个 Tag 定义播放间隔,实现无间隔播放等功能。因为我习惯把 iTunes Plus AAC 的 Tag 整个复制到 FLAC 上,再把 FLAC 转成 ALAC 加入资料库,所以这个 Tag 也一并继承到了转换后的 ALAC 上。问题在于我用的 iTunes Plus AAC 规格是 24bit 44.1kHz ,而我的 FLAC 规格是 24bit 48kHz 。采样率变化之后间隔信息本来也应该相应变化的,但如果 iTunes 读取了低采样率文件的间隔信息,就会出现音频提前结束播放的情况。。。
    wyd011011daniel
        9
    wyd011011daniel  
       2022-10-26 07:45:10 +08:00 via iPhone
    @Sharcle 哈哈哈哈哈,找到原因就好
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1203 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:54 · PVG 07:54 · LAX 15:54 · JFK 18:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.