博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单谈谈如何利用h5实现音频的播放
阅读量:7048 次
发布时间:2019-06-28

本文共 1937 字,大约阅读时间需要 6 分钟。

  hot3.png

作者:白狼 出处:本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

如何在网页上进行音频的播放?话题挺高大上,实际上的开发工作确实非常easy,只需要利用html5的一个标签audio即可。

网页上大多数音频一般是通过插件falsh播放的。但是,并不是所有的浏览器对其都支持。

html5 规定了通过audio元素来包含音频的标准方法。

当前audio支持的音频格式以及具体细节,可参kao w3c标准。本文我们来看看具体实现以及一些有处理。

我们首先做一个简单的实现,播放单个语音。

//html

    播放语音    

  

//javascript

$(".audio").on("click", function () {    var $this = $(this),        $audio = $this.find("audio");    $audio.get(0).play();});

 

对,你没有看错,就是这么简单。

但是,想象一下我们现在的场景就是类似微信的聊天页面,一个页面大概有多个播放语音的按钮,还用上面的代码实现,你可以播放一下试试看。

效果不出所料的话所点击的音频会同时进行播放。

这显然不是我们所要的。我们目前的实现方法是标记一个播放状态,播放任意一个音频之前判断该状态,如果该状态显示正在播放,只需要将其暂停,然后再播放新的音频即可。

我们来看看具体实现。

var playing = false, currentAudio = null;$(".audio").on("click", function () {    var $audio = $(this).find("audio");    if (playing) {        playing = false;        currentAudio.pause();        currentAudio.currentTime = 0;        currentAudio = null;    }    playing = true;    currentAudio = $audio.get(0);    currentAudio.play();});

 

这次就如愿了,在多音频的状态下实现了播放单个音频不冲突的问题了。

问题总是那么多,尖锐的矛盾也随之而来。

打开firebug,我们切换到Network栏看看,实际上我们的多个音频在页面上也是进行了加载,这样用户打开我们的网页就会非常耗时,在网络不好的情况下效果估计会更差。

我们来看看如何在不影响效果的前提下进行优化。

①、我们对audio进行了优化,实际的播放地址用属性存储

②、如此的话我们就有必要简单的修改下javascript代码即可

来看看具体实现

//html
    播放语音    
    播放语音    

 

//javascript
var playing = false, currentAudio = null;$(".audio").on("click", function () {    var $audio = $(this).find("audio");    $audio.attr("src", $audio.data("src"));    if (playing) {        playing = false;        currentAudio.pause();        currentAudio.currentTime = 0;        currentAudio = null;    }    playing = true;    currentAudio = $audio.get(0);    currentAudio.play();});

 

简单吧,我们只增加了一行代码 $audio.attr("src", $audio.data("src")); 对于要播放的我们在点击后才去加载。

我们打开firebug-Network验证下,确实是点击后才进行加载,这样就达到我们优化的效果了。

有小伙伴想问了,我想实现像百度mp3的播放那样,有播放倒计时。因为不属于我们本文主题,具体细节实现可参kao w3ccurrentTime即可

转载于:https://my.oschina.net/manks/blog/665179

你可能感兴趣的文章
python(pexpect)自动ssh脚本
查看>>
进击的python【片首】
查看>>
JAVA解析XML
查看>>
Camtasia Studio(屏幕录制工具)
查看>>
py3中输入密码时隐藏
查看>>
Redis监控方案
查看>>
zabbix如何监控WEB应用性能
查看>>
gitLab 分支受保护设置
查看>>
Openstack 大纲
查看>>
为什么在子线程中不能更新UI的简单解释
查看>>
愚者与智者的48个差距!
查看>>
vs2015的部署以及一些其他问题
查看>>
SaltStack安装配置与远程执行测试
查看>>
我的友情链接
查看>>
安卓开发中如何给乐联网上传数据
查看>>
显示当前时间对话框
查看>>
集成测试与单元测试的联系
查看>>
Linux下安装Nrpe软件相关报错
查看>>
JSON Web Token 入门教程
查看>>
浅谈推送服务的那些“坑”
查看>>