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提供的所有的⽅法属性事件:
⽅法:
向⾳频/视频添加新的⽂本轨道
检测浏览器是否能播放指定的⾳频/视频类型
重新加载⾳频/视频元素
开始播放⾳频/视频
暂停当前播放的⾳频/视频
暂停当前播放的⾳频/视频
属性:
返回表⽰可⽤⾳轨的 AudioTrackList 对象
设置或返回是否在加载完成后随即播放⾳频/视频
返回表⽰⾳频/视频已缓冲部分的 TimeRanges 对象
返回表⽰⾳频/视频当前媒体控制器的 MediaController 对象
设置或返回⾳频/视频是否显⽰控件(⽐如播放/暂停等)crossOrigin设置或返回⾳频/视频的 CORS 设置
返回当前⾳频/视频的 URL
设置或返回⾳频/视频中的当前播放位置(以秒计)
设置或返回⾳频/视频默认是否静⾳
设置或返回⾳频/视频的默认播放速度
返回当前⾳频/视频的长度(以秒计)
返回⾳频/视频的播放是否已结束
返回表⽰⾳频/视频错误状态的 MediaError 对象
设置或返回⾳频/视频是否应在结束时重新播放
设置或返回⾳频/视频所属的组合(⽤于连接多个⾳频/视频元
素)
设置或返回⾳频/视频是否静⾳
返回⾳频/视频的当前⽹络状态
设置或返回⾳频/视频是否暂停
设置或返回⾳频/视频播放的速度
返回表⽰⾳频/视频已播放部分的 TimeRanges 对象
设置或返回⾳频/视频是否应该在页⾯加载后进⾏加载
返回⾳频/视频当前的就绪状态
返回表⽰⾳频/视频可寻址部分的 TimeRanges 对象
返回⽤户是否正在⾳频/视频中进⾏查
设置或返回⾳频/视频元素的当前来源
返回表⽰当前时间偏移的 Date 对象
返回表⽰可⽤⽂本轨道的 TextTrackList 对象
返回表⽰可⽤视频轨道的 VideoTrackList 对象
设置或返回⾳频/视频的⾳量
事件:
abort当⾳频/视频的加载已放弃时
当浏览器可以播放⾳频/视频时
当浏览器可在不因缓冲⽽停顿的情况下进⾏播放时
当⾳频/视频的时长已更改时
emptied当⽬前的播放列表为空时
ended当⽬前的播放列表已结束时
error当在⾳频/视频加载期间发⽣错误时
java浏览器下载
当浏览器已加载⾳频/视频的当前帧时
当浏览器已加载⾳频/视频的元数据时
当浏览器开始查⾳频/视频时
pause当⾳频/视频已暂停时
play当⾳频/视频已开始或不再暂停时
playing当⾳频/视频在已因缓冲⽽暂停或停⽌后已就绪时
当浏览器正在下载⾳频/视频时
ratechange当⾳频/视频的播放速度已更改时
seeked当⽤户已移动/跳跃到⾳频/视频中的新位置时
seeking当⽤户开始移动/跳跃到⾳频/视频中的新位置时
stalled当浏览器尝试获取媒体数据,但数据不可⽤时
suspend当浏览器刻意不获取媒体数据时
timeupdate当⽬前的播放位置已更改时
volumechange当⾳量已更改时
waiting当视频由于需要缓冲下⼀帧⽽停⽌