我的应用程序从一个shoutcast流中传输音频,但是使用iOS11更新播放/暂停按钮激活Javascript for HTML 5音频不再起作用
var audio = new Audio('http://radio.stream.net:1234/;stream/1');
audio.play();
我只是更新了phonegap CLI和Xcode 如果我在iPhone 7模拟器上从Xcode编译它不起作用
答案 0 :(得分:0)
shoutcast服务器不再适用于与iOS11捆绑在一起的Safari版本的原因是因为iOS11不再支持HTTP / 0.9,并且原始的ShoutCast服务器非常陈旧并且使用称为“ICY”的自定义协议,即HTTP-喜欢,但不符合标准。
但是,如果您是服务器管理员,则有一个相对简单的解决方法:在shoutcast服务器前安装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映射到您的shoutcast服务器。然后,您可以将此链接嵌入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();