我正在努力获得简单的音频播放。我有一个轨道列表,每个轨道都有唯一的网址,当用户按下相关的播放按钮时,我想播放这些轨道。我已经尝试过 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 无法播放,除非我将 .wav 添加到 src 的末尾 - 尽管 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
所以我从谷歌云存储桶提供文件。保存文件时,我没有指定 MIME 类型,因此它以二进制/八位字节流的形式返回。桌面浏览器足够聪明,可以克服这个问题,但移动浏览器却不行。
最佳答案
所以我从谷歌云存储桶提供文件。保存文件时,我没有指定 MIME 类型,因此它以二进制/八位字节流的形式返回。桌面浏览器足够聪明,可以克服这个问题,但移动浏览器却不行。因此,上述问题的答案是在写入 GCS 时为相关文件设置 MIME 类型。
关于ios - HTML5 音频标签无法在 ios chrome 和 safari 中播放音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23458713/