
发现个奇怪的问题,Chrome 在播放 flac 时,无法根据播放时长计算该请求 flac 文件的第几个字节,只能通过不断下载,来试探有没有到达目标的时间节点。
有人遇到过类似的问题吗?更见鬼的是,Firefox 上就没有这个问题。
[注] chrome 是最新版的 119.0.6045.160
请求的是相同的 flac 文件,响应头 content-type = audio/flac


破案了,问了个做流媒体网站的网友,他说是因为 Chrome 没有考虑到 flac 的 SEEKTABLE 为空的情况:
flac 有一个 seek table 记录了 seek point <-> byte range 的对应关系,这个元数据不是必要的。
按理来说,音频应当:
如果 flac 音频却提供了一个空的 seek table,将导致浏览器行为异常,进入 fallback
metaflac --list D:\docker_volumes_root\nginx\static\flac\06_DDD-OD.flac METADATA block #0 type: 0 (STREAMINFO) is last: false length: 34 minimum blocksize: 4096 samples maximum blocksize: 4096 samples minimum framesize: 1407 bytes maximum framesize: 20134 bytes sample_rate: 96000 Hz channels: 2 bits-per-sample: 24 total samples: 353775343 MD5 signature: d6e8bfcb7c040b54db777e5574032fa3 METADATA block #1 type: 4 (VORBIS_COMMENT) is last: false length: 40 vendor string: reference libFLAC 1.1.3 20130526 comments: 0 METADATA block #2 type: 3 (SEEKTABLE) is last: true length: 0 seek points: 0 # flac 文件提供了空的 SEEKTABLE 1 ysc3839 2023-11-29 01:50:00 +08:00 via Android 都是 HTTP/2 请求的吗? |
2 niubiman 2023-11-29 07:49:56 +08:00 flac 文件太大了吧 |
3 hesetiema 2023-11-29 14:59:44 +08:00 哥们还去提了一个 bug 吗,哈哈,有意思。但我看有些单词应该是 flac ,不是 falc. |