HTML 5 AudioElement在IOS 11设备上的Safari中无法播放mp3直播

时间:2017-09-29 09:53:31

标签: javascript html5 mobile-safari html5-audio ios11

我是广播电台的网络开发人员。自IOS 11发布以来,我们收到了一些用户投诉,称我们的音频直播流不能在IOS 11设备上播放。要在我们的网站中嵌入流,我们使用HTML5 AudioElement。在iPhone IOS 11上调试javascript时,我们发现调用音频元素play()方法会导致ErrorError 4的MediaError(MEDIA_ERR_SRC_NOT_SUPPORTED)。所有其他设备(Android,Windows和IOS 10及以下)播放流没有任何问题。 我创建了一个小代码实例

    <audio controls>
      <source src="http://hr-hrinfo-
      live.cast.addradio.de/hr/hrinfo/live/mp3/128/stream.mp3" 
      type="audio/mpeg;codecs="mp3"">
      Your browser does not support the audio element.
    </audio>

https://codepen.io/ampersand83/pen/pWwgKm我只是通过AudioTag创建一个AudioElement,并将源标记交给我们的一个流URL。

运行IOS 10及更低版本的设备可以毫无问题地播放流以及当前的Android或Windows设备。但是,运行IOS 11.0.1的设备无法播放该流。我找不到任何有关为什么不再可能的信息。有没有人知道为什么我们的溪流不再工作,能否就我们能做些什么让他们再次工作给我们建议?

3 个答案:

答案 0 :(得分:0)

这个问题归功于Apple WebKit在最新iOS版本中的变化。对于运行KH Icecast的用户,很快就会有一个修复(希望!)https://github.com/karlheyes/icecast-kh/issues/172

答案 1 :(得分:0)

添加像这样的简单音频控件

<audio controls>
  <source src="https://swr-swr3-live.sslcast.addradio.de/swr/swr3/live/mp3/128/stream.mp3" type="audio/mpeg;codecs="mp3"">
</audio>

...不玩。

虽然这个:

<audio controls>
  <source src="http://mp3-live.swr3.de/swr3_m.m3u">
</audio>

我能发现的唯一区别是,在MP3播放列表工作时它会失败。 在iOS 10及更低版本以及当前的macOS Safari上,它都兼容。 iOS 11上的Chrome也失败了(相同的Webkit引擎?!)

答案 2 :(得分:0)

我在尝试将带有音频控件的本地HTML文件加载到UIWebView时看到了同样的问题。但是,我的文件是.m4a音频文件。我发现只需删除type即可。所以我的HTML看起来像这样:

<div class="audio"><audio controls><source src="my_local_audio_file.m4a"></audio></div>

使用type=audio/mp4也对我有用。因此,我猜测它是一种不兼容的mime类型,只是删除该类型将是最好的选择。

希望这有帮助。