apicloud apicloud

注册
查看: 7454|回复: 31

[模块教程] 【官方版主分享】audioRecorder录音模块Demo

主题:
41
帖子:
9320
云币:
12702

社会摇圣诞节老司机你吃屎!首长好!我还是个孩子!托马斯全旋女朋友不想上班!装逼侠单身狗超人锤子侠SB侠我李白贼6APICloud大会专属勋章狗年旺旺旺足球狗捣蛋鬼儿童节快乐APICloud五岁啦

[模块教程] 【官方版主分享】audioRecorder录音模块Demo

7454 31 | 发表于 2019-6-12 15:18:36 |阅读模式 | |
本帖最后由 Mr.ZhouHeng 于 2019-6-13 17:02 编辑

视频全部效果:
audioRecorder 模块通过封装系统的录音接口,能够快速的为开发者提供一个完整的录音功能。
该模块提供Android和iOS版本,录音方式及录制的音频格式也依赖于相关系统。

需要注意的是:安卓跟ios所支持的格式是不一样的,最好选择aac格式
如果不选择acc格式你们就需要判断此设备是ios还是安卓,(api.systemType使用这个可以获取是安卓还是ios)
然后根据设备不同去配置对应录制音频格式。

  • Android系统支持的录制音频格式为:amr、aac、3gp

  • iOS 系统支持的录制音频格式为:aac、wav


模块文档地址:https://docs.apicloud.com/Client-API/Func-Ext/audioRecorder



接口详解:

startRecord接口:
一定需要详细看下sampleRates跟format这俩个参数对应配置,看自己需求去设置,不然配置错误有可能出现未知错误,或者报错,一定看清楚format配置类型对应的sampleRates取值范围是否对应了文档要求;

  1. var audioRecorder = api.require('audioRecorder');
  2. var audioRecorder = api.require('audioRecorder');
  3. audioRecorder.startRecord({
  4.     channel:2,                        //默认是2    选项有俩个  1 单声道   2 立体声道,如果对于声道没有要求可以直接实际代码可以不写;
  5.     sampleRates:16000,           //  设置采样率   aac 支持范围(8000 - 96000)  amr 支持 8000、16000    pcm 只支持 16000
  6.     savePath:'fs://test.amr',    //  这块是配置录音存储的位置
  7.     format:'amr'            //设置音频格式  aac (支持Android 4.1+ & iOS)    pcm (支持Android & iOS)   amr (仅支持Android)  3gp (仅支持Android)   caf (仅支持 iOS)  wav (仅支持 iOS)  acm (仅支持 iOS)
  8. }, function(ret, err){
  9.     console.log(JSON.stringify(ret));
  10. });

复制代码

getVolume接口:
获取录音的时时声音大小,个人感觉如果配置了监听audioRecorder.addEventListener({name: 'volume'   事件,这个接口可以不需要调用

  1. var audioRecorder = api.require('audioRecorder');
  2. audioRecorder.getVolume(function(ret){
  3.     console.log(JSON.stringify(ret));
  4. });
复制代码

addEventListener接口:
    此接口是监听录音时获取时时声音大小,这样可以拿来作为录音状态喇叭大小的,此处楼主虽然获取了,但是没有去显示这个功能;
楼主在监听这个接口调用getAttr接口获取音频时长,这样就能配置录音的时间进度00:00:00

  1. //监听声音
  2.                 audioRecorder.addEventListener({
  3.                         name: 'volume'
  4.                 }, function(ret) {
  5.                         console.warn(JSON.stringify(ret));
  6.                         window.ListVue.volume = ret.volume;
  7.                         // 获取录音时间进度
  8.                         audioRecorder.getAttr({
  9.                                 path: window.ListVue.recording
  10.                         }, function(ret) {
  11.                                 window.ListVue.Time = ret.duration;
  12.                         });
  13.                 });
复制代码

注意点1:目前此模块需要注意的地方是暂停跟继续俩个接口,暂时只支持ios,安卓不支持;所以俩个接口需要这样处理:

  1. // 判断是ios还是安卓
  2.                                         if (api.systemType != 'ios') {
  3.                                                 api.toast({
  4.                                                         msg: '此模块暂时不支持安卓暂停/继续',
  5.                                                         duration: 2000,
  6.                                                         location: 'bottom'
  7.                                                 });
  8.                                                 return;
  9.                                         }
  10.                                         if (Show) {
  11.                                                 // 暂停录音  目前这个方法在ios会导致模块继续之后无法监听 此问题已经反馈
  12.                                                 audioRecorder.pauseRecord(function(ret) {
  13.                                                         api.toast({
  14.                                                                 msg: '暂停录音',
  15.                                                                 duration: 2000,
  16.                                                                 location: 'bottom'
  17.                                                         });
  18.                                                 });
  19.                                                 this.Show = false;
  20.                                         } else {
  21.                                                 // 继续录音
  22.                                                 audioRecorder.resumeRecord(function(ret) {
  23.                                                         api.toast({
  24.                                                                 msg: '继续录音',
  25.                                                                 duration: 2000,
  26.                                                                 location: 'bottom'
  27.                                                         });
  28.                                                 });
  29.                                                 this.Show = true;
  30.                                         }
复制代码

注意点2: 在关闭窗口的时候,需要调用停止录音的接口,如果不调用会出现app闪退情况:
  1. // 停止录音
  2.                 audioRecorder.stopRecord(function(ret) {
  3.                         console.warn(JSON.stringify(ret));
  4.                 });
  5.                 //重置按钮关闭状态
  6.                 this.Show = false;
  7.                 // 延迟关闭录音界面返回录音列表
  8.                 setTimeout(function() {
  9.                         api.closeWin();
  10.                 }, 300);
复制代码





Demo整体结构说明截图:




核心代码截图:








Demo最终效果图:

无录音文件时显示:




有录音文件时显示:





录音开始界面:




录音暂停界面:





本帖子中包含更多资源    您需要 登录 才可以下载或查看,没有帐号?立即注册

微信公众号、小程序、app、webapp、pc网页端项目合作点击QQ82201127

主题:
41
帖子:
9320
云币:
12702

社会摇圣诞节老司机你吃屎!首长好!我还是个孩子!托马斯全旋女朋友不想上班!装逼侠单身狗超人锤子侠SB侠我李白贼6APICloud大会专属勋章狗年旺旺旺足球狗捣蛋鬼儿童节快乐APICloud五岁啦

 楼主| 发表于 2019-6-13 11:57:17 |
建议:此模块是否可以考虑增加一个删除录音文件的接口,因为有时候点击返回,也就不需要那个文件了?不然只能添加fs模块进行删除比较麻烦
微信公众号、小程序、app、webapp、pc网页端项目合作点击QQ82201127

主题:
41
帖子:
9320
云币:
12702

社会摇圣诞节老司机你吃屎!首长好!我还是个孩子!托马斯全旋女朋友不想上班!装逼侠单身狗超人锤子侠SB侠我李白贼6APICloud大会专属勋章狗年旺旺旺足球狗捣蛋鬼儿童节快乐APICloud五岁啦

 楼主| 发表于 2019-6-13 14:27:15 |
完毕有些功能自己完善一下
微信公众号、小程序、app、webapp、pc网页端项目合作点击QQ82201127

官方版主

UID:791051

主题:
20
帖子:
21763
云币:
6534
发表于 2019-6-13 14:50:27 |
地板坐好

职业车手

UID:436609

主题:
44
帖子:
1812
云币:
7480

足球狗

发表于 2019-6-17 08:37:42 |
支持一下

主题:
0
帖子:
7
云币:
0
发表于 2019-10-20 17:11:53 |

支持一下

主题:
0
帖子:
3
云币:
3
发表于 2019-10-25 10:14:16 |
这个好 就是下载分不够咋办

驾校小白

UID:454003

主题:
13
帖子:
35
云币:
37
发表于 2019-10-30 12:55:03 |
这个可以用来通话录音吗?试了两个组件在IOS上都不能实现通话录音。

驾校小白

UID:454003

主题:
13
帖子:
35
云币:
37
发表于 2019-10-30 12:58:07 |
这个模块能否实现通话录音啊?尤其是IOS

驾校小白

UID:454003

主题:
13
帖子:
35
云币:
37
发表于 2019-10-30 14:29:03 |
我在测试的时候发现,1、安卓手机总是提示“未知错误”;2、iOS只要接听电话,录音就会停止,应该不能实现通话录音。
1234下一页
您需要登录后才可以回帖 登录 | 立即注册

快速回复 返回顶部 返回列表