叙述HTML5音频支持状态糟糕的文章已有很多。事实就是如此,所以我不会在此赘述这一观点。相反,我主要着眼于开发者在特定平台中将会遇到的问题及潜在解决方式。

HTML5 audio from codecanyon.ne

table

   上表总结了网页浏览器当前的市场份额。Internet Explorer依然是主要的桌面浏览器,紧随其后的是Chrome和Firefox。在手机领域中,Safari主导市场,这主要归功于强大的iOS品牌,紧随其后的是Android。因此,我们将照此顺序逐一进行论述。

  给刚着手植入音频内容的开发者的建议:建议在音频层上采用 SoundManager 2。目前,这是最佳Javascript音频库。植入过程非常简单,API非常整洁,能够在BSD Open Source许可下获得。此外,这一工具的过人之处在于,提供免费第三方代码更新和维护。

  Internet Explorer

  IE 8及其以下的版本不支持HTML5画布和音频,所以这又回到:图像部分基于DOM操作,音频部分通过Flash技术。采用SoundManager 2能够让你在于旧版IE浏览器中支持HTML5音频的过程中省下很多麻烦。

  IE 9则完全不同。HTML5画布和音频表现突出。若微软放弃Win XP OS,IE 9的使用率将大幅提高。

  这将是微软的明智之举。

  Chrome

  Chrome 18及更高版本支持HTML5音频和画布。但HTML5音频只有在网页服务器支持部分下载的情况下才能够顺利运作。这一问题的症状有:

  *无法重播音频

  *无法控制重播位置

  *音频播放一次后停止,但“结束”事件没被激活

  解决这一问题最简单的方式是,在网页服务器上启动远程请求。注意,Google App Engine并不支持远程请求,但我们可以通过执行支持远程请求的文件服务程式解决这一问题。

  另一避开这一问题的方法是,避免采用内置循环函数,通过load()函数“倒回”,在此播放音频。这能够解决问题,但会提高网页服务器的负荷。当加载函数在音频实例中被调用时,网页浏览器就从网页服务器上提取音频数据。

  另一选择就是运用Web Audio API。主要缺点是,目前只有Chrome支持Web Audio API,而且只支持版本18或更高版本。它的突出优点是,Web Audio API通过提供音量和摇摄控制及即时过滤,解决HTML5音频的所有缺点。

  Safari

  Safari和Chrome都是基于Webkit的浏览器,二者存在类似的优缺点。和Chrome一样,Safari支持HTML5画布和音频,但Safari不支持Google Web Audio API。

  遗憾的是,Safari也有和Safari类似的缺陷——它和不支持部分下载的网页服务器所提供的音频不同。Safari的症状截然不同:

  *少量/简短音频没有问题

  *冗长音频就无法播放,会发送音频文件格式受损的错误提示

  解决这一问题最简单的方式是,启用网页服务器的部分下载功能。补救方法具体查看Chrome版块。

  Firefox

   Firefox 3.6及更高版本支持HTML5画布和音频。但Firefox 3.6的音频支持存在许多漏洞——简短音频无法播放,中长音频没有问题。如果你寻求更高级的音频支持,Mozilla基金会目前正在执行自己的Web Audio API——Audio Data API。

  iOS移动平台(Safari移动平台)

  Safari Mobile包含桌面浏览器的所有优缺点,此外它还有一个限制条件—–所有HTML5音频必须通过用户互动激活。这一限制条件带来两个主要弊端。

  首先,这一限制条件阻止音频进行预先缓存/预先加载。因此,任何等待音频“canplaythrough”事件,以探测预先加载音频的应用就会陷入挂起状态。其次,激活音频回放事件非常棘手,因为苹果极力抵制非用户激活的音频回放——这一限制条件一度有个变通方案:通过Javascript模拟点击事件,但这一方法自iOS 4.2.x起就不再适用。

  最后,Flash音频回放技巧不适用iOS平台是因为iOS不支持Flash技术。

  iOS只有两个选项——禁止所有音频,继续通过网页浏览器提供应用;或者保留所有音频,通过appMobi、PhoneGap或Appcelerator以原生应用形式发行HTML5应用。关于游戏开发,我建议采用appMobi,因为它有画布加速器功能。

  Android(内置浏览器)

   只要你的OS平台不那么分散。存在许多Android版本使得HTML5音频支持很难有最终定论。关于目前Android OS存在多少变体,不妨查看YUI Theatre的视频“Scaling Mobile with YUI”。在22分处,解说者呈现一个包含目前市场上Android OS版本不完全列表的幻灯片。

  这些是平台的常见音频特点:

  * Android 2.x似乎支持HTML5音频,但它无法播放音频。幸运的是,应用继续顺利运作——所有音频函数调用返回适当结果,加载/缓存事件被合理激活。

  * ICS (Android 4.x)支持HTML5音频,它能够播放音频。但回放只限于一次一个声音,最近播放的音频会代替所有之前的音频回放。

  我没有测试Android 3.x的HTML5音频性能。

  幸运的是,Android支持Flash整合,所以回放Flash音频具有可行性。尽管如此,Flash是个可选谷歌应用,因此并非所有Android 手机都安装了这一应用。遗憾的是,关于手机Flash市场的渗透情况,我没有任何数据。无论如何,这一方法并不推荐,因为Adobe已放弃支持手机 Flash技术,所以在不久的将来,这多半会消失。

  确保提供适当音频支持的最佳方式就是走本地路线,通过appMobi、 PhoneGap或Appcelerator发布HTML5应用。关于游戏开发,我推荐appMobi,因为它计划在Android平台添加加速画布支持 (游戏邦注:这一功能目前处在Beta阶段)。

  总结

  通往HTML5音频之路布满荆棘。我建议采用 SoundManager 2,这能够帮你省下很多麻烦。关于手机平台,情况就不那么明朗。不妨考虑走本地路线,通过asappMobi、PhoneGap或 Appcelerator之类的HTML5原生应用平台以原生应用形式发行HTML5应用。关于游戏开发,目前的最佳HTML5原生应用平台是 appMobi。

转载于:https://www.cnblogs.com/ranfei/p/4715436.html

关于html5音频如何应用及解决方法?相关推荐

  1. 音频服务器未运行怎么办,音频服务未运行怎么办 音频服务未运行解决方法【详细介绍】...

    最近许多网友在使用电脑时遇到了"音频服务未运行"的错误提示,出现这种提示的原因有很多,症状也不尽相同.今天我们就针对不同的"音频服务未运行"症状进行分析解答,希 ...

  2. 工作手记之ios safari禁止音频自动播放的解决方法

    问题场景: 制作一个H5,需要微信打开后背景音乐或者其他音频文件进行播放,但是经常出现的结果是,安卓基本没有问题,但是苹果手机确不行,总是不进行播放,这是为什么呢? 问题原因: 苹果为了用户着想,禁止 ...

  3. 怎样打开计算机音频服务器,win7系统音频服务器怎么启动 win7电脑音频服务未启动解决方法...

    ‍‍‍‍‍ ‍电脑中的音频服务对于不少用户来说是不可缺少的,最近有用户发现自己电脑的音频服务未运行,那么win7系统音频服务器怎么启动?下面就将具体的启动方法分享给大家.‍ 具体的解决方法: 1.Wi ...

  4. Windows 10 音频爆音的解决方法,问题根源太多,期待完善

    概述 : 您经常会遇到错误 Windows 10 音频噼啪声或爆裂声或其他问题.Windows 10 音频噼啪声错误可能由多种原因引起.此文转载自外国论坛,已翻译过来.如果您有同样的问题,请尝试这些解 ...

  5. 谷歌浏览器怎么改html5,关于谷歌浏览器不支持html5中audio的autoplay解决方法(js代码解决)...

    当我们直接写autoplay时,在chrome中浏览器并没有自动播放音频: 如果直接通过js来调用audio的play()方法也不行: 控制台还会报错 大概意思:play()调用失败,因为用户没有与文 ...

  6. MFC中使用SDL播放音频没有声音的解决方法

    2019独角兽企业重金招聘Python工程师标准>>> 本文所说的音频是指的纯音频,不包含视频的那种. 在控制台中使用SDL播放音频,一般情况下不会有问题. 但是在MFC中使用SDL ...

  7. Windows7音频服务未运行的几种解决方法

    问题:我安装的是windows7旗舰版,今天突然右下角小喇叭显示红叉,鼠标移动到上面显示"音频服务未启动".我原以为是声卡问题,可打开设备管理看了一下,声卡没问题,播放音乐也正常, ...

  8. java碰到乱码如何解决方法_如何处理java的乱码

    为什么说乱码是中国程序员无法避免的话题呢?这个首先要从编码机制上说起,大家都是中文和英文的编码格式不是一样,解码也是不一样的! 如果中国的程序员不会遇到乱码,那么只有使用汉语编程.汉语编程是怎么回事, ...

  9. 关于Windows 11 CSGO 蓝牙耳机声音变尖锐的解决方法

    问题描述: 升级Windows 11系统后,CSGO连接蓝牙耳机,声音变尖锐,伴有间歇性停顿.像音频被"加速"一样 解决方法: Win11设置 - Windows更新 - 高级选项 ...

最新文章

  1. java JDBC连接Oracle数据库的方法
  2. 高德地图和百度地图接口封装遇到的问题(二):绘制带有方向箭头的折线
  3. 【随笔】JVM核心:JVM运行和类加载
  4. 【LOJ#6682】梦中的数论(min_25筛)
  5. html vue分页,Vue.js bootstrap前端实现分页和排序
  6. MySQL修改my.cnf配置不生效的解决方法
  7. 如何在一台电脑上使用两个git@osc的账号进行操作
  8. MATLAB模式识别基本操作函数解析
  9. 联想网络同传系统用户手册(联想EDU应用用户手册)[联想硬盘保护,联想网络控制工具]
  10. 测试淘宝购物流程图,梳理基本流和备选流,测试用例
  11. oracle数据库sql语句插入时间信息
  12. Win7安装VMware Tools问题
  13. 类ChatGPT的部署与微调(上):从LLaMA、Alpaca/Vicuna/BELLE、中文版
  14. bug:点击element的级联选择器 级联面板偶尔不显示 触发条件未知
  15. 《《《翻译》》》Navigation Through Cluttered Environments
  16. 谷歌浏览器如何配置SSL证书
  17. 斐讯k2php环境,斐讯K2T SDK编译环境
  18. 《数据结构与抽象:Java语言描述(原书第4版)》一P.2.2 前置条件和后置条件...
  19. 研究生挂职锻炼-面试问答演练
  20. 华为如何分屏_5G平板能干啥?华为MatePad Pro来了

热门文章

  1. oracle linux 图形化,Linux7图形化安装Oracle11g教程,亲测实用有效!
  2. java 注解 jpa_详解Spring Data JPA使用@Query注解(Using @Query)
  3. 怎么使用php连接mysql_如何使用PHP连接MySQL
  4. 隐藏a标签seo_百度SEO网站整体优化方案 - 蜘蛛池博客
  5. python做视频抽帧图_Python提取视频中图片的示例(按帧、按秒)
  6. mysql数据库获得时间段内数据_mysql 获取规定时间段内的统计数据
  7. JAVA线程并发数量控制_Java并发工具类(三):控制并发线程数的Semaphore
  8. mysql索引 order by_MySQL 通过索引优化含ORDER BY的语句
  9. pythonpandas设置索引_pandas DataFrame的修改方法(值、列、索引)
  10. pythonexcel计算横列总和-在python中,如何在字典中找到值的总和?每个键都有多个值...