通过使用 audio 元素或对象支持多个音频格式,你可以将更多的听众从多个浏览器吸引到你的网页上。

使用源元素指定多个音频格式

在将 HTML5 audio 元素添加到代码时,可以指定一条在浏览器不支持 audio 标记时显示的错误消息

如果你使用的浏览器根本不支持音频,这将很有效。但是,如果支持 audio 元素,但不支持文件格式,则不会显示你指定的错误消息。由于在支持 HTML5 的所有浏览器中仅存在几种支持的格式,因此要赢得最大范围的受众,则可以使用 source 元素指定要尝试的多种文件格式。下面的示例演示了三种格式。

  1. <!doctype html>
  2. <head>
  3. <title>
  4. Multiple format audio example
  5. </title>
  6. <!-- Uncomment the following meta tag if you have issues rendering this page on an intranet site. -->
  7. <!-- <meta http-equiv="X-UA-Compatible" content="IE=9"/> -->
  8. </head>
  9. <body>
  10. <h1>
  11. Using source to support multiple audio formats
  12. </h1>
  13. <!-- The browser will automatically choose the format it supports. -->
  14. <audio controls="true">
  15. <source src="demo.mp3" type="audio/mp3">
  16. <source src="demo.ogg" type="audio/ogg">
  17. <source src="demo.aac" type="audio/mp4">
  18. <!-- If no support at all. -->
  19. HTML5 audio not supported
  20. </audio>
  21. </body>
  22. </html> 

在本示例中,你指定了三种格式。浏览器将自动选择它支持的格式,如果根本就不支持音频,则它将调用错误消息。

利用 JavaScript 确定音频文件格式支持

利用 JavaScript 查明使用的格式比源元素的简单故障转移模型要 复杂一些。但是,在确定可用的支持后,便可以为余下的会话进行格式假设。

audio 对象将提供 canPlayType 方法以便预测试浏览器 的文件格式功能。 canPlayType 方法带有一个音频 mime 类型、编解码器(可选)参数,并且返回三个字符串之一:empty、maybe 或 probably。

下面的代码示例将测试三类音频文件格式(MPEG-Layer 3 (MP3)、ogg 和 aac)。

  1. <!doctype html>
  2. <head>
  3. <title>Using multiple file formats in JavaScript</title>
  4. <!-- Uncomment the following meta tag if you have issues rendering this page on an intranet site. -->
  5. <!-- <meta http-equiv="X-UA-Compatible" content="IE=edge"/> -->
  6.  
  7. <script type= "text/javascript">
  8. function checkAudioCompat() {
  9. var myAudio = document.createElement('audio');
  10. var msg = document.getElementById("display");
  11.  
  12. msg.innerHTML = "";
  13.  
  14. if (myAudio.canPlayType) {
  15. // CanPlayType returns maybe, probably, or an empty string.
  16. var playMsg = myAudio.canPlayType('audio/mpeg');
  17. if ( "" != playMsg) {
  18. msg.innerHTML += "mp3 is " + playMsg + " supported<br/>";
  19. }
  20. playMsg = myAudio.canPlayType('audio/ogg; codecs="vorbis"');
  21. if ( "" != playMsg){
  22. msg.innerHTML += "ogg is " + playMsg + " supported<br/>";
  23. }
  24.  
  25. playMsg = myAudio.canPlayType('audio/mp4; codecs="mp4a.40.5"');
  26. if ( "" != playMsg){
  27. msg.innerHTML += "aac is "+playMsg+" supported<br/>";
  28. }
  29. }
  30. else {
  31. msg.innerHTML += "no audio support";
  32. }
  33. }
  34. </script>
  35. </head>
  36. <body>
  37. <button onclick="checkAudioCompat();">
  38. Test for audio format type
  39. </button>
  40. <div id="display"> </div>
  41. </body>
  42. </html>

在使用 Internet Explorer 9 中的新元素和功能时,最好是始终测试实现的 功能。为了检查支持,功能最初会通过使用 document.createElement() 变量创建音频对象。如果音频对象成功创建,则语句 “if (myAudio.canPlayType)” 返回 true,并且继续执行以测试特定的文件类型。

测试以确定浏览器是否支持文件格式是一大难题。由于 canPlayType 方法可返回三种状态,请使用以下语句以针对支持问题返回布尔值 true 或 false。向 playMsg 变量分配 canPlayType 测试的结果,然后如以下示例中所示测试结果。

  1. var playMsg = myAudio.canPlayType('audio/mpeg');
  2. if ( "" != playMsg) {
  3. msg.innerHTML += "mp3 is " + playMsg + " supported<br/>";
  4. }

如果 canPlayType 返回“maybe”或“probably”,则此语句返回 true 结果。如果 canPlayType 的结果为空字符串,则该语句返回 false,换句话说,不支持此格式。

由于 canPlayType 可返回多个格式,因此可能需要测试层次结构,以便选择最适合文件格式的层次结构。

Audio-支持多个音频文件格式的更多相关文章

  1. html5中audio支持音频格式

    HTML5 Audio标签能够支持wav, mp3, ogg, acc, webm等格式,但有个很重要的音乐文件格式midi(扩展名mid)却在各大浏览器中都没有内置的支持.不是所有的浏览器都支持MP ...

  2. HTML5的Audio标签打造WEB音频播放器

    目前,WEB页面上没有标准的方式来播放音频文件,大多数的音频文件是使用插件来播放,而众多浏览器都使用了不同的插件.而HTML5的到来,给我们提供了一个标准的方式来播放WEB中的音频文件,用户不再为浏览 ...

  3. wav音频文件格式解析【个人笔记】(自用)

    1. WAV格式 wav是微软开发的一种音频文件格式,注意,wav文件格式是无损音频文件格式,相对于其他音频格式文件数据是没有经过压缩的,通常文件也相对比较大些.. 支持多种音频数字,取样频率和声道, ...

  4. AMR音频文件格式分析

    AMR音频文件格式分析 1 概要 如今非常多智能手机都支持多媒体功能,特别是音频和视频播放功能,而AMR文件格式是手机端普遍支持的音频文件格式.AMR,全称是:Adaptive Multi-Rate, ...

  5. 使用Core Audio实现VoIP通用音频模块

    最近一直在做iOS音频技术相关的项目,由于单项直播SDK,互动直播SDK(iOS/Mac),短视频SDK,都会用到音频技术,因此在这里收集三个SDK的音频技术需求,开发一个通用的音频模块用于三个SDK ...

  6. RIFF和WAVE音频文件格式

    RIFF file format RIFF全称为资源互换文件格式(Resources Interchange File Format),是Windows下大部分多媒体文件遵循的一种文件结构.RIFF文 ...

  7. [Audio processing] FFMPEG转音频格式和采样率

    利用FFMPEG转音频格式和采样率 import os import string import subprocess as sp #Full path of ffmpeg FFMPEG_BIN = ...

  8. JS指定音频audio在某个时间点进行播放,获取当前音频audio的长度,音频时长格式转化

    前言: 今天接到一个需求,需要获取某个.mp3音频文件的时间长度和指定音频audio在某个时间点进行播放(比如说这个视频有4分钟,我要让它默认从第2秒的时候开始播放),这里当然想到了H5中的audio ...

  9. HMS Core音频编辑服务支持7种音频特效,助力一站式音频处理

    多媒体时代,音频作为内容传播中的重要形式,因其不受空间限制.认知负担小.声音元素多样化等特点,广泛应用于短视频制作.儿童在线教育.有声阅读.游戏等领域产品,在各种形式的音频呈现过程中,合理添加音效能够 ...

随机推荐

  1. 21. DNS 配置和端口检测

    一.将本机的 DNS 配置为 8.8.8.8 ,用 nslookup (还可以使用 host.dig)验证 # 修改配置文件     # vim /etc/resolv.conf # 在文件的最后加入 ...

  2. MVC Razor 一些常用的方法

    一.在ASP.NET MVC中,创建视图最典型的方式是调用一个action方法,它使用模型准备视图数据.action方法然后调用控制器的视图方法创建视图. 1 <% Html.RenderAct ...

  3. js实现求平均数功能

    今天在项目中遇到了一个求平均值的需求,大致需求就是,页面上面有四个input框,失去焦点就计算平均值,结果保留两位小数,并输出在页面上.不多说了,直接奉上代码,如有更好思路或者想法,都欢迎大家和我讨论 ...

  4. Android 使用图标字体库

    首先,在assets资源文件下放入图标字体库. 我这儿采用的是fontawesome-webfont.ttf 然后, 在安卓中加载这个资源文件 Typeface fontFace = Typeface ...

  5. Jquery网页选项卡应用

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  6. ExtJs 学习笔记

    1.显示中文  <script type="text/javascript" src="../../locale/ext-lang-zh_CN.js"&g ...

  7. pymssql文档

    原文地址 http://pymssql.org/en/latest/ref/_mssql.html _mssql module reference pymssql模块类,方法和属性的完整文档. Com ...

  8. php 数组Array 删除指定键名值

    if(array_key_exists('keyname',$array)){ //检查数组中此键名是否存在: unset($array['keyname']); //删除后位置仍然保留,但清空了键名 ...

  9. web_profile(网站分析)配置

    web_profiler: # DEPRECATED, it is not useful anymore and can be removed # safely from your configura ...

  10. POI3.10 根据Excel模版导出数据测试

    1:所需jar包 2:Mysql数据库表内容如下: 3:代码结构如下: (1)User.java public class User { private int id; private String ...