我是广播电台的网络开发人员。自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的设备无法播放该流。我找不到任何有关为什么不再可能的信息。有没有人知道为什么我们的溪流不再工作,能否就我们能做些什么让他们再次工作给我们建议?
答案 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类型,只是删除该类型将是最好的选择。
希望这有帮助。