我很难实现简单的音频播放。我有一个曲目列表,每个曲目都有唯一的url,当用户按下相关的播放按钮时,我想要播放它们。我尝试过soundmanager2和jplayer,但无法满足我的用例(桌面浏览器和ios)。我已经回退到纯html5,代码如下:
<audio controls>
<source src="/path/to/file" type="audio/wav">
Your browser does not support the audio element.
</audio>
在桌面版Chrome和桌面版Safari中,这个工作完美。在iOS Chrome和iOS Safari(最新版本)中,播放器没有出现,而是出现了一个灰色框内的消息,显示“无法播放音频文件”。
我是否正确使用了这个标签?如何克服这些错误?
更新1
我正在从Google AppEngine发送wav文件(作为blob)。我发现Safari不能播放,除非我在src的末尾添加.wav - 尽管src只是对文件的间接链接。实际返回的文件确实以.wav结尾,但Safari不够聪明,无法识别这一点。
更新2
以下内容在所有浏览器(上述提到的)中都有效 - 因此它不特定于wav文件。
<audio controls preload="metadata">
<source src="http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/Samples/AFsp/M1F1-Alaw-AFsp.wav" type="audio/wav">
Your browser does not support the audio element.
</audio>
我已经将文件从Google App Engine发送为MIME附件和原始响应,但没有任何区别。
更新3
我更换了一个更长的wav文件(http://www.villagegeek.com/downloads/webwavs/ever_again.wav),这个文件在iOS上也无法播放。目前不清楚是由于长度、大小还是其他变量导致的。
更新4
我排除了文件大小的问题,因为这个24秒的wav文件可以正常工作。
<audio controls preload="auto">
<source src="http://www.dailywav.com/sites/default/files/wavs/dontlikelaughing.wav" type="audio/wav">
Your browser does not support the audio element.
</audio>
更新 5
所以我正在从 Google Cloud 存储桶中提供文件。在保存文件时,我没有指定 MIME 类型,因此它被返回为二进制/octet-stream。桌面浏览器足够聪明,可以克服这个问题,但移动浏览器则不能。