我正在使用这个函数:
function playSound(file) {
MyAudio = new Audio(file);
MyAudio.play();
}
很不幸,我无法找到一种文件类型可以在所有浏览器中都能使用。Mp3可以在Chrome、Safari和IE中使用,但无法在FF和Opera中使用,而.ogg文件似乎只能在FF中使用。
有什么方法可以绕过这个问题吗?我猜测没有一种编程方式可以检测使用的浏览器,然后播放适当的文件类型?任何建议/想法都将不胜感激。谢谢。
我正在使用这个函数:
function playSound(file) {
MyAudio = new Audio(file);
MyAudio.play();
}
很不幸,我无法找到一种文件类型可以在所有浏览器中都能使用。Mp3可以在Chrome、Safari和IE中使用,但无法在FF和Opera中使用,而.ogg文件似乎只能在FF中使用。
有什么方法可以绕过这个问题吗?我猜测没有一种编程方式可以检测使用的浏览器,然后播放适当的文件类型?任何建议/想法都将不胜感激。谢谢。
var audio = new Audio();
if(audio.canPlayType("audio/mpeg") == "probably") {
playSound("myMedia.mp3");
} else if(audio.canPlayType("audio/webm") == "probably") {
playSound("myMedia.webm");
}
// do checks for other types...
<source>
标签,浏览器将播放它能够播放的第一个标签。<audio controls="controls">
<source src="mymedia.ogg" type="audio/ogg" />
<source src="mymedia.mp3" type="audio/mpeg" />
Update your browser! This sentence is fallback content for browsers that do not support the audio element at all.
</audio>
audio.canPlayType('audio/ogg; codecs="vorbis"') == "probably";
canPlayType
有三种可能的返回值:
如果您真的想测试ogg支持,那么可以测试非空字符串(即测试"probably"或"maybe"),如下所示:
// test for *any* Ogg codecs
if(audio.canPlayType("audio/ogg") != "") {
playSound("myMedia.ogg");
}
'audio/ogg; codecs="vorbis"'
来测试 Vorbis 编解码器。测试通用的 Ogg 支持可能没有什么用处。在Chrome、Firefox和Opera中使用webm格式 + 在Firefox、IE、Safari和Opera中使用wav格式。
HTML:
<audio id="audio"></audio>
JS:
var src = "myvideoname";
var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
if (is_chrome) {
$("#audio").attr('src', 'audio/' + src + '.webm')
}
else {
$("#audio").attr('src', 'audio/' + src + '.wav')
}
webm
格式,否则就使用wav
格式。
注意:
使用这段代码时,您只需要在audio
文件夹中使用相同名称的webm
和wav
音频文件即可。
注意2:此代码需要jQuery支持。
canPlayType
:https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLMediaElement/canPlayType - apsillers