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

2022-10-25 21:13:27 +08:00
 Sharcle

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

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/889818

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX