HelloWorld 发表于 2025-4-16 07:23:47

nextjs 输出缓存的音频文件导致 iOS 无法播放

本帖最后由 HelloWorld 于 2025-4-16 08:01 编辑

有个网页需要用 audio 标签播放音频,如果给原始的音频链接,则播放正常

如果是通过 nextjs api 缓存后再输出文件流,会导致 iOS/iPad 无法播放,但是其它设备可以播放

对比 response header 发现 nextjs api 返回的音频文件多了个 content-range: bytes 0-255051/255052

查阅资料发现 iOS 设备对音频文件比较严格,header 里出现 content-range 会导致无法播放

nextjs api 返回 content-range 是强制的,无法取消,于是只好做个兼容,判断是 iOS 设备直接给音频链接,不缓存,其它设备再进行缓存

导致的问题是 iOS 点击播放可能要等一会才有声音,因为音频文件是 AI tts,有时生成需要几秒钟

补充:
解决了,用 post 方式去 nextjs api 获取音频文件,得到文件后再在前端播放
页: [1]
查看完整版本: nextjs 输出缓存的音频文件导致 iOS 无法播放