OP 从 iPod 时代养成了用 iTunes 传歌到移动设备的习惯,所以现在依然会用系统自带的音乐 App 放歌。升级 iOS16.1 之后突然发现昨天用无线局域网传进来的两张专辑有一个神奇的 Bug:
只要一首歌播放到最后的十几秒,就会被强行切到下一首歌。与此同时 UI 仍然显示正在播放上一首歌的最后十几秒。如果这时候手动切到下一首,音乐会在和正常切歌一样的短暂停顿后继续放下去,UI 也会切换到下一首歌相应的播放位置(而不是从头开始)。如果什么都不做等待最后十几秒走完,歌曲会无缝继续播放,UI 会直接切换到下一首歌已经播放了十几秒的状态。
这个 Bug 只出现在 OP 昨晚用无线局域网传输的两张专辑上。这两张专辑里的每一首歌都会触发这个 Bug 。而昨天稍晚是用数据线传输的歌曲则无此问题。
1
wyd011011daniel 2022-10-25 21:15:52 +08:00
会不会是歌没传完
|
2
Sharcle OP @wyd011011daniel 如果手动把进度拉到一首歌的最后十几秒,大概率不触发这个 Bug ,会正常把歌放完。
|
3
Sharcle OP @Sharcle 这个特性让我一度怀疑人生。因为两张都是新专辑,曲目我还不太熟悉。听着听着突然被切歌,打开 App 往回倒几秒再放却又正常播放了。不禁让我怀疑究竟是我的脑子还是这个世界出了问题。
|
4
Sharcle OP 我刚刚甚至在 Mac 的音乐 App 上复现了一次……并且找到了一个规律。在 Mac 上,如果使用扬声器播放就不会触发这个 Bug ,而使用 AirPods 就会触发这个 Bug 。
|
5
Sharcle OP 现在还不能排除我音源的问题。但是 Mac 的这个表现也太匪夷所思了。
|
6
Sharcle OP 定位到问题了。FLAC 用 XLD 转换成 ALAC 的过程中会莫名其妙地短上十几秒。把 ALAC 拿到 VOX 里播放,列表里显示时长有 3:22 ,但播放进度条只显示 3:05 。这两个时间对不上。
|
7
Sharcle OP 初步结论:XLD 在转换 24bit 48kHz 的 FLAC 为 ALAC 的时候,会出现音频时长错误的 Bug
|
8
Sharcle OP 艹,这下真的破案了。不是 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 读取了低采样率文件的间隔信息,就会出现音频提前结束播放的情况。。。 |
9
wyd011011daniel 2022-10-26 07:45:10 +08:00 via iPhone
@Sharcle 哈哈哈哈哈,找到原因就好
|