iOS Safari 音频流播放问题
iOS Safari audio stream play issue
所以我正在从我的 nodejs-server 流式传输 .mp3 音频(使用 stream.pipe(响应)),并使用 HTML5 <audio>
播放它。在除 iOS 浏览器之外的所有设备上都能正常工作。
典型行为:音频播放几秒钟然后暂停,我什至无法取消暂停,所以我必须刷新页面。但我没有发现任何问题,因为无论如何播放几秒钟后音频又停止了。
奇怪的事情:它在本地主机上完美运行。
即使只是连接速度问题,我认为浏览器仍然应该能够以某种方式缓冲音频并在准备好后立即播放。
回复headers:
res.status(206).header({
'Content-Type': 'audio/mpeg',
'Content-Length': content_length,
'Content-Range': "bytes " + start + "-" + end + "/" + stat.size,
'Content-Transfer-Encoding': "binary",
'Accept-Ranges': "bytes"
});
readStream = fs.createReadStream(mp3path, {
start: start,
end: end
});
readStream.pipe(res);
网页代码很简单,我只是用了一个<audio>
标签,并从js文件中设置了src:
htmlAudio.src = audio_stream_api_link;
好的,所以如果有人遇到同样的问题,在我的情况下,解决方案是通过添加以下内容来修复代理 (nginx) 配置:
proxy_set_header Connection keep-alive;
Ref
所以我正在从我的 nodejs-server 流式传输 .mp3 音频(使用 stream.pipe(响应)),并使用 HTML5 <audio>
播放它。在除 iOS 浏览器之外的所有设备上都能正常工作。
典型行为:音频播放几秒钟然后暂停,我什至无法取消暂停,所以我必须刷新页面。但我没有发现任何问题,因为无论如何播放几秒钟后音频又停止了。
奇怪的事情:它在本地主机上完美运行。
即使只是连接速度问题,我认为浏览器仍然应该能够以某种方式缓冲音频并在准备好后立即播放。
回复headers:
res.status(206).header({
'Content-Type': 'audio/mpeg',
'Content-Length': content_length,
'Content-Range': "bytes " + start + "-" + end + "/" + stat.size,
'Content-Transfer-Encoding': "binary",
'Accept-Ranges': "bytes"
});
readStream = fs.createReadStream(mp3path, {
start: start,
end: end
});
readStream.pipe(res);
网页代码很简单,我只是用了一个<audio>
标签,并从js文件中设置了src:
htmlAudio.src = audio_stream_api_link;
好的,所以如果有人遇到同样的问题,在我的情况下,解决方案是通过添加以下内容来修复代理 (nginx) 配置:
proxy_set_header Connection keep-alive;
Ref