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

时间:2017-09-21 07:40:26

标签: javascript cordova audio ios11 phonegap

我的应用程序从一个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编译它不起作用

1 个答案:

答案 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();