gpt4 book ai didi

javascript - phonegap html 5 音频播放停止在 iOS11 上工作

转载 作者:行者123 更新时间:2023-12-02 22:37:26 24 4
gpt4 key购买 nike

我的应用程序从广播流中流式传输音频,但使用 iOS11 更新播放/暂停按钮触发 HTML 5 音频的 Javascript 不再起作用

var audio = new Audio('http://radio.stream.net:1234/;stream/1');
audio.play();

我只是更新 phonegap CLI 和 Xcode
如果我在 iPhone 7 模拟器上从 Xcode 编译它不起作用

最佳答案

之所以在 iOS11 捆绑的 Safari 版本中无法使用 ShoutCast 服务器是因为 iOS11 不再支持 HTTP/0.9,而原来的 ShoutCast 服务器非常老旧,使用了一个自定义协议(protocol),叫做“ICY”,它类似于 HTTP,但是不符合标准。

但是,如果你是服务器管理员,有一个相对简单的解决方法:在直播服务器前安装 nginx 作为反向代理,它会为你升级 HTTP 版本,没有任何提示。

nginx 所需的配置如下所示:

server {
listen 81;

location / {
proxy_pass http://127.0.0.1:8000;
body_filter_by_lua_block {
ngx.arg[1] = ngx.re.sub(ngx.arg[1], "^ICY ([0-9]+) ", "HTTP/1.0 $1 ")
}
}
}

这将映射 http://example.com:81到您的广播服务器。然后你可以在 HTML5 标签中嵌入这个链接,iOS11 Safari 就可以正常播放了。

在问题的示例中,我假设您是 http://radio.steam.net 的管理员并且可以在该服务器上运行 nginx。在这种情况下,您的 nginx 配置看起来像
server {
listen 81;

location / {
proxy_pass http://radio.stream.net:1234;
body_filter_by_lua_block {
ngx.arg[1] = ngx.re.sub(ngx.arg[1], "^ICY ([0-9]+) ", "HTTP/1.0 $1 ")
}
}
}

你的音频脚本看起来像
var audio = new Audio('http://radio.stream.net:81/;stream/1');
audio.play();

关于javascript - phonegap html 5 音频播放停止在 iOS11 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46338141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com