PhoneGap HTML 5音频播放停止在iOS11上工作



我的应用程序流来自shoutcast流,但是使用ios11更新播放/暂停按钮,fire javascript for html 5音频不再工作

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

我刚刚更新Phonegap CLI和XCode如果我从iPhone 7模拟器上的XCode编译,则无效

叫喊服务器不再在与ios11捆绑的Safari版本中起作用的原因是因为ios11不再支持http/0.9,而原始的shoutcast服务器非常旧,并且使用了一种自定义协议"冰冷",类似于HTTP,但不符合标准标准。

但是,如果您是服务器管理员,则有一个相对容易的解决方法:在Shoutcast Server的前面安装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();

最新更新