小程序采集录音并上传到后台

当我们需要开发一款小程序,在其中加入录音的功能并同时上传到后台,需要完成以下几个步骤:

  1. 小程序界面设计和开发

首先需要在小程序中设计并开发一个录音的页面,添加按钮用于开始和停止录音,同时显示录音的进度条和录音时长等信息。可以使用小程序提供的组件和 API 实现该功能。

  1. 视频录音功能实现

在小程序中使用 wx.startRecord() 方法开始录音,使用 wx.stopRecord() 方法停止录音,并使用 wx.getRecorderManager() API 控制录音时长和录音文件的存储位置。

  1. 录音文件上传到后台

上传录音文件需要借助后台的接口,可使用 wx.uploadFile() API 将录音文件上传到后台服务器。接口需要提供上传文件的路径,服务器接口地址,用户 Token 等参数。

以下是两个示例说明:

示例一:小程序录音上传到七牛云

1.小程序前端代码

<button bindtap="startRecord">开始录音</button>
<button bindtap="stopRecord">停止录音</button>
<progress active wx:if="{{isRecording}}" bindactiveend="onRecordEnd" percent="{{recordPercent}}">
</progress>

在小程序页面中,添加两个按钮用于开始和停止录音,以及进度条。使用 wx.startRecord() 方法开始录音,使用 wx.stopRecord() 方法停止录音,控制录音时长和录音文件的存储位置。

startRecord() {
    const recorderManager = wx.getRecorderManager()
    recorderManager.start({
        format: 'mp3',
        duration: 60000
    })
    recorderManager.onStart(() => {
        console.log('start recording')
        this.setData({
            isRecording: true
        })
        this.drawCircleTimer()
    })
},
stopRecord() {
    this.clearCircleTimer()
    const recorderManager = wx.getRecorderManager()
    recorderManager.stop()
    recorderManager.onStop((res) => {
        console.log('stop recording', res)
        this.setData({
            isRecording: false,
            recordTime: res.duration / 1000,
            src: res.tempFilePath
        })
        this.uploadRecord(res.tempFilePath)
    })
},

在小程序页面中,定义两个方法 startRecord()stopRecord(),并分别用于实现开始录音和停止录音的功能。在 startRecord() 方法中创建 recorderManager 实例,并使用 recorderManager.start() 方法启动录音,设置格式为 mp3,录音时长为60秒。启动成功后,记录当前正在录音,并用 drawCircleTimer() 方法开始绘制录音进度条。在录音停止时,停止绘制录音进度条;使用 recorderManager.stop() 方法停止录音,并在录音停止后回调 recorderManager.onStop() 方法,记录录音时长、录音文件路径及状态,将录音文件上传到服务器。

uploadRecord(filePath) {
    wx.uploadFile({
        url: 'https://upload-z1.qiniup.com/',
        filePath: filePath,
        name: 'file',
        formData: {
            key: "audio/record_" + (new Date()).getTime() + ".mp3",
            token: this.data.qiniuToken
        },
        success(res) {
            console.log('upload success', res)
        },
        fail(res) {
            console.log('upload fail', res)
        }
    })
}

在小程序页面中,定义了上传录音文件 uploadRecord() 方法,并使用 wx.uploadFile() API 将录音文件上传到七牛云服务器,配置上传参数,并设置回调方法,记录上传成功或失败后的状态和信息。

2.后台代码

后台代码需要实现生成七牛云 Token 和上传接口。第一步,后台代码需要生成一个七牛云Token,用于生成上传凭证。可使用七牛云提供的 SDK,或者通过网络API获取token。第二步,开发上传接口,接收从前端发送过来的录音文件,使用七牛云 SDK 对文件进行上传操作。

示例二:小程序录音上传到腾讯云

1.小程序前端代码

<button bindtap="startRecord">开始录音</button>
<button bindtap="stopRecord">停止录音</button>
<progress active wx:if="{{isRecording}}" bindactiveend="onRecordEnd" percent="{{recordPercent}}">
</progress>

在小程序页面中,添加两个按钮用于开始和停止录音,以及进度条。使用 wx.startRecord() 方法开始录音,使用 wx.stopRecord() 方法停止录音,控制录音时长和录音文件的存储位置。

startRecord() {
    const recorderManager = wx.getRecorderManager()
    recorderManager.start({
        format: 'mp3',
        duration: 60000
    })
    recorderManager.onStart(() => {
        console.log('start recording')
        this.setData({
            isRecording: true
        })
        this.drawCircleTimer()
    })
},
stopRecord() {
    this.clearCircleTimer()
    const recorderManager = wx.getRecorderManager()
    recorderManager.stop()
    recorderManager.onStop((res) => {
        console.log('stop recording', res)
        this.setData({
            isRecording: false,
            recordTime: res.duration / 1000,
            src: res.tempFilePath
        })
        this.uploadRecord(res.tempFilePath)
    })
},

在小程序页面中,定义两个方法 startRecord()stopRecord(),并分别用于实现开始录音和停止录音的功能。在 startRecord() 方法中创建 recorderManager 实例,并使用 recorderManager.start() 方法启动录音,设置格式为 mp3,录音时长为60秒。启动成功后,记录当前正在录音,并用 drawCircleTimer() 方法开始绘制录音进度条。在录音停止时,停止绘制录音进度条;使用 recorderManager.stop() 方法停止录音,并在录音停止后回调 recorderManager.onStop() 方法,记录录音时长、录音文件路径及状态,将录音文件上传到服务器。

uploadRecord(filePath) {
    var that=this;
    wx.uploadFile({
        url: 'http://api.exapmle.com/upload',
        filePath: filePath,
        name: 'file',
        formData: {
            business_code:that.data.business_code,
            uid: that.data.uid
        },
        success(res) {
            console.log('upload success', res)
        },
        fail(res) {
           console.log('upload fail', res)
        }
    })
}

在小程序页面中,定义了上传录音文件 uploadRecord() 方法,并使用 wx.uploadFile() API 将录音文件上传到腾讯云服务器,配置上传参数,并设置回调方法,记录上传成功或失败后的状态和信息。

2.后台代码

后台代码需要实现生成腾讯云 CosToken 和上传接口。第一步,后台代码需要生成一个腾讯云 COS Token,用于生成上传凭证。可使用腾讯云提供的 SDK,或者通过网络API获取 token 。第二步,开发上传接口,接收从前端发送过来的录音文件,使用腾讯云 SDK 对文件进行上传操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:小程序采集录音并上传到后台 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • 讲解Java中如何构造内部类对象以及访问对象

    在Java中,内部类是嵌套在其他类中的类。内部类可以访问其外部类的成员变量和方法,也可以使代码结构更加清晰,并且可以实现一些高度封装的功能。在代码中构造内部类对象有两种方式:非静态内部类和静态内部类,下面将对这两种内部类进行详细讲解。 构造非静态内部类对象 非静态内部类是依赖于外部类对象而存在的,因此在构造非静态内部类对象时,需要先构造外部类对象,然后创建内…

    Java 2023年5月26日
    00
  • Spring Data Jpa 复杂查询方式总结(多表关联及自定义分页)

    Spring Data JPA 复杂查询方式总结 Spring Data JPA 是 Spring 借鉴了 Hibernate 实现的一套 JPA 规范实现。Spring Data JPA 使得我们在使用 JPA 进行数据库操作时能够更加简单方便。 下面我们来讲解 Spring Data JPA 如何进行复杂查询,包括多表关联查询和自定义分页查询。 多表关联…

    Java 2023年5月20日
    00
  • Kafka中消息队列的两种模式讲解

    Kafka中消息队列的两种模式讲解 Apache Kafka是一个开源的分布式流处理平台,其主要功能是异步处理、发布和订阅消息。在Kafka中,消息队列的模式分为两种:点对点模式和发布/订阅模式。 点对点模式 点对点模式通常用于一个消息只能被一个消费者消费的场景,即一条消息只会被消费一次。这种模式中,消息被发送到Kafka中的一个队列中,在队列中等待消费者来…

    Java 2023年5月20日
    00
  • Ewebeditor 的一些漏洞总结 推荐

    Ewebeditor 的一些漏洞总结 Ewebeditor 是一款常见的 Web 富文本编辑器,但是它也存在着一些安全漏洞。本文将对这些漏洞进行总结,并提供一些示例说明。 漏洞一:目录遍历漏洞 漏洞描述:Ewebeditor 在处理文件上传请求时,未对上传文件的路径进行充分的校验,导致攻击者可以通过构造特殊的上传请求,上传任意文件到服务器中。 漏洞利用:攻击…

    Java 2023年6月16日
    00
  • java迷宫算法的理解(递归分割,递归回溯,深搜,广搜)

    介绍 Java迷宫算法旨在通过编程形成一个迷宫的图形,让计算机自动地创建和解决迷宫。本文将会介绍常见的四种Java迷宫算法:递归分割算法、递归回溯算法、深度优先搜索(DFS)和广度优先搜索(BFS)算法。 递归分割算法 递归分割算法首先创建一个空的网格表示迷宫。网格中的每个单元格都代表迷宫的一个位置。分割过程会对这些位置进行标记,就像把它们铺上拼图一样。该算…

    Java 2023年5月19日
    00
  • java读取XML文件的四种方法总结(必看篇)

    下面是针对“java读取XML文件的四种方法总结(必看篇)”这篇攻略的详细讲解。 提供四种方法 该攻略提供了使用Java读取XML文件的四种方法,分别是: 使用SAX方式解析XML文件 使用DOM方式解析XML文件 使用JDOM方式解析XML文件 使用XMLBeans方式解析XML文件 对于每种方法,攻略都提供了详细的介绍和示例代码,并且针对各种场景,推荐了…

    Java 2023年5月20日
    00
  • java实现文件重命名的方法

    这里是“Java实现文件重命名的方法”的完整攻略,包含两条示例。 1. Java实现文件重命名的方法 Java提供了renameTo()方法来实现文件重命名。该方法位于Java File类中,其语法如下: public boolean renameTo(File dest) 其中dest为需要重命名后的文件路径。 该方法返回值为布尔型,如果重命名成功则返回t…

    Java 2023年5月19日
    00
  • Java图像处理之获取用户感兴趣的区域

    下面是Java图像处理之获取用户感兴趣的区域的完整攻略。 1. 确定用户感兴趣的区域 首先需要进行的是确定用户感兴趣的区域,这可以通过鼠标点击的方式来实现。具体的流程如下: 首先需要引用Java图形处理的库,例如JavaFX等。 创建一个可视化界面,并在界面上用ImageView组件展示原始图片。 监听ImageView的鼠标点击事件,获取鼠标点击的坐标,然…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部