HTML5中的audio在react中的使用----语音播放进度条、倍速播放、下载等

最近做了一个将通话记录,语音转文字并可以在聊天记录里标注动机和摘要的需求,
上图只是一个小小的模块,
第一次接到使用到语音相关的需求,记录一下

上图是一个客服聊天记录的模块,语音转文字,将录音展示出来,可以音频播放,可以滑动进度条,倍速播放等等,以前自己心血来潮,使用原生js写过一个类似于网易音乐,播放音乐的播放器,包括进度条,音量调节啥的。
当然做项目吗,还是使用HTML自带的更好,省时省力高高效
我们的service后台前端工程使用的是react + ant-design + node作为中间层
后端使用的是Java
后端只需要给前端提供录音音频,再讲智能组语音转文字转成的文字传给我就好了,
在前端工程里,语音播放、倍速,进度条代码如下:

1、在state里定义了语音倍速的选择数组:

2、在render函数里渲染的时候使用audio标签,并遍历渲染倍速播放按钮,进度条啥的都有audio自带的属性实现了,就是这么简单

3、自定义切换倍速函数changeMultiple,嗯,不可避免的使用了原生JS获取了dom节点,然后给dom元素添加倍速属性playbackRate就可以了

一个小小的如上图所示的语音播放功能就实现了,

在实现需求的时候,不忘给自己充充电,顺便把video和audio自带的所有的属性、方法、事件都学习了一遍,感觉,嗯,真好用~~~

HTML5提供的video和audio提供的所有的方法属性事件:

方法:


addTextTrack()


向音频/视频添加新的文本轨道


canPlayType()


检测浏览器是否能播放指定的音频/视频类型


load()


重新加载音频/视频元素


play()


开始播放音频/视频


pause()


暂停当前播放的音频/视频

属性:


audioTracks


返回表示可用音轨的 AudioTrackList 对象


autoplay


设置或返回是否在加载完成后随即播放音频/视频


buffered


返回表示音频/视频已缓冲部分的 TimeRanges 对象


controller


返回表示音频/视频当前媒体控制器的 MediaController 对象


controls


设置或返回音频/视频是否显示控件(比如播放/暂停等)


crossOrigin


设置或返回音频/视频的 CORS 设置


currentSrc


返回当前音频/视频的 URL


currentTime


设置或返回音频/视频中的当前播放位置(以秒计)


defaultMuted


设置或返回音频/视频默认是否静音


defaultPlaybackRate


设置或返回音频/视频的默认播放速度


duration


返回当前音频/视频的长度(以秒计)


ended


返回音频/视频的播放是否已结束


error


返回表示音频/视频错误状态的 MediaError 对象


loop


设置或返回音频/视频是否应在结束时重新播放


mediaGroup


设置或返回音频/视频所属的组合(用于连接多个音频/视频元素)


muted


设置或返回音频/视频是否静音


networkState


返回音频/视频的当前网络状态


paused


设置或返回音频/视频是否暂停


playbackRate


设置或返回音频/视频播放的速度


played


返回表示音频/视频已播放部分的 TimeRanges 对象


preload


设置或返回音频/视频是否应该在页面加载后进行加载


readyState


返回音频/视频当前的就绪状态


seekable


返回表示音频/视频可寻址部分的 TimeRanges 对象


seeking


返回用户是否正在音频/视频中进行查找


src


设置或返回音频/视频元素的当前来源


startDate


返回表示当前时间偏移的 Date 对象


textTracks


返回表示可用文本轨道的 TextTrackList 对象


videoTracks


返回表示可用视频轨道的 VideoTrackList 对象


volume


设置或返回音频/视频的音量

事件:


abort


当音频/视频的加载已放弃时


canplay


当浏览器可以播放音频/视频时


canplaythrough


当浏览器可在不因缓冲而停顿的情况下进行播放时


durationchange


当音频/视频的时长已更改时


emptied


当目前的播放列表为空时


ended


当目前的播放列表已结束时


error


当在音频/视频加载期间发生错误时


loadeddata


当浏览器已加载音频/视频的当前帧时


loadedmetadata


当浏览器已加载音频/视频的元数据时


loadstart


当浏览器开始查找音频/视频时


pause


当音频/视频已暂停时


play


当音频/视频已开始或不再暂停时


playing


当音频/视频在已因缓冲而暂停或停止后已就绪时


progress


当浏览器正在下载音频/视频时


ratechange


当音频/视频的播放速度已更改时


seeked


当用户已移动/跳跃到音频/视频中的新位置时


seeking


当用户开始移动/跳跃到音频/视频中的新位置时


stalled


当浏览器尝试获取媒体数据,但数据不可用时


suspend


当浏览器刻意不获取媒体数据时


timeupdate


当目前的播放位置已更改时


volumechange


当音量已更改时


waiting


当视频由于需要缓冲下一帧而停止

原文地址:https://www.cnblogs.com/katydids/p/11470338.html

时间: 2024-08-19 11:15:00

HTML5中的audio在react中的使用----语音播放进度条、倍速播放、下载等的相关文章

.Net Framework4.5中Asp.net mvc使用Singal R轮训实现导入进度条功能

.Net Framework4.5中Asp.net mvc使用Singal R轮训实现导入进度条功能 我的项目需求是:在.net4.5中用mvc5实现上传xml文件,后台实时导入数据库时传到前台进度,进度条实现动态在走. 网上看了很多实现此需求的方法(服务器轮训向客户端发送消息)ajax.webscoket.singal等. 之前的代码是前段用定时器ajax去访问后台的进度数据.然后给进度条赋值.发现有时候ajax请求总出现pending的状态. 之前的缓存实现代码: var cc=true;

HTML5 CSS3 诱人的实例 : 网页加载进度条的实现,下载进度条等

今天给大家带来一个比较炫的进度条,进度条在一耗时操作上给用户一个比较好的体验,不会让用户觉得在盲目等待,对于没有进度条的长时间等待,用户会任务死机了,毫不犹豫的关掉应用:一般用于下载任务,删除大量任务,网页加载等:如果有使用html5为手机布局的,也可以用于手机中~ 效果图: 1.html结构: <div id="loadBar01" class="loadBar"> <div> <span class="percent&qu

【React Native开发】React Native控件之ProgressBarAndroid进度条讲解(12)

转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/50596367 本文出自:[江清清的博客] (一)前言 [好消息]个人网站已经上线运行,后面博客以及技术干货等精彩文章会同步更新,请大家关注收藏:http://www.lcode.org 今天我们一起来看一下进度加载条ProgressBarAndroid控件的讲解与基本使用. 刚创建的React Native技术交流群(282693535),欢迎各位大牛,React

【React Native开发】React Native控件之ProgressBarAndroid进度条解说(12)

转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/50596367 本文出自:[江清清的博客] (一)前言 [好消息]个人站点已经上线执行,后面博客以及技术干货等精彩文章会同步更新.请大家关注收藏:http://www.lcode.org 今天我们一起来看一下进度载入条ProgressBarAndroid控件的解说与基本使用. 刚创建的React Native技术交流3群(496508742),React Native

html5 实现video标签的自定义播放进度条

现在随着html5的渐热,越来越多的web开发者都开始选择使用html5写出一些比较好的web应用. html代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>HTML5-Video-Player</title> <style type="text/css"> .vi

【react】---react中key值的作用

一.React中key值得作用 react中的key属性,它是一个特殊的属性,它是出现不是给开发者用的,而是给React自己使用,有了key属性后,就可以与组件建立了一种对应关系,简单说,react利用key来识别组件,他是一种身份标识,就像每个人有一个身份证来做辨识一样.每个key 对应一个组件,相同的key react认为是同一个组件,这样后续相同的key对应组件都不会被创建 key值相同 如果两个元素是相同的key,且满足第一点元素类型相同, 若元素属性有所变化,则React只更新组件对应

9款极具创意的HTML5/CSS3进度条动画(免积分下载)

尊重原创,原文地址:http://www.cnblogs.com/html5tricks/p/3622918.html 免积分打包下载地址:http://download.csdn.net/detail/yangwei19680827/7352505 今天我们要分享9款极具创意的HTML5/CSS3进度条动画,这些进度条也许可以帮你增强用户交互和提高用户体验,喜欢的朋友就收藏了吧. 1.HTML5/CSS3图片加载进度条 可切换多主题 今天要分享的这款HTML5/CSS3进度条模拟了真实的图片加

html5中的audio和video属性和事件汇总

<audio> 标签属性: src:音乐的URL preload:预加载 autoplay:自动播放 loop:循环播放 controls:浏览器自带的控制 <video> 标签属性: src:视频的URL poster:视频封面,没有播放时显示的图片 preload:预加载 autoplay:自动播放 loop:循环播放 controls:浏览器自带的控制条 width:视频宽度 height:视频高度 获取HTMLVideoElement和HTMLAudioElement对象

audio在浏览器中自动播放

audio 在浏览器中自动播放 //使用autoplay属性 var src = "./award.wav"; var body = document.getElementsByTagName("body")[0]; if (body.getElementsByTagName("audio").length <= 0) { var audio = document.createElement("audio"); audi