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