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

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

  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中cookie的使用

    针对“老生常谈java中cookie的使用”的问题,我将分为以下几个部分进行讲解: 1. 什么是Cookie Cookie 是浏览器在客户端保存数据的一种机制,通过向客户端发送 Cookie,并且在客户端保存了 Cookie 之后,在下次客户端请求时会自动携带这个 Cookie,以此来实现持续的服务端对客户端的标识与状态保持。 2. Java 中 Cooki…

    Java 2023年6月16日
    00
  • Hibernate核心类和接口的详细介绍

    关于“Hibernate核心类和接口的详细介绍”的攻略如下: Hibernate 核心类和接口的详细介绍 SessionFactory SessionFactory 是 Hibernate 中最重要的类之一,用于创建 Session 对象。SessionFactory 是一个线程安全的、可被多个 Session 共用的对象。 SessionFactory 通…

    Java 2023年5月19日
    00
  • Java垃圾回收之标记压缩算法详解

    Java垃圾回收之标记压缩算法详解 什么是标记压缩算法 标记压缩算法(Mark-Compact Algorithm)是一种垃圾回收算法,它与标记清除算法和复制算法并称为三大经典垃圾回收算法之一。它是针对标记清除算法可能产生的内存碎片问题而提出的。 标记压缩算法分为两个步骤:标记活动对象和压缩内存。在标记活动对象阶段,标记所有存活对象,并将其从不可达对象中区分…

    Java 2023年5月19日
    00
  • Java自学书籍推荐 程序员到架构师必看的书

    Java自学书籍推荐 程序员到架构师必看的书 简介 Java自学书籍推荐涵盖了从程序员到架构师行业人员所需的书籍,包含Java语言、Java框架和架构设计的相关书籍。 Java语言 1.《Java编程思想》 这本书是学习Java编程语言的经典之作,全书篇幅较长,深入浅出地讲解了Java语言和基础的Java编程知识。尤其适合初学者阅读。 2.《Effectiv…

    Java 2023年5月19日
    00
  • Tomcat服务部署及优化的实现

    Tomcat服务部署及优化的实现 Tomcat作为一个基于Java的web应用服务器,它的部署和优化对于web应用的性能和稳定性至关重要。本文将介绍Tomcat服务部署及优化的实现攻略,包括以下步骤: 上传Tomcat压缩包并解压 配置Tomcat环境变量 启动Tomcat服务 部署web应用程序 Tomcat性能优化 上传Tomcat压缩包并解压 首先,我…

    Java 2023年5月19日
    00
  • Spring 校验(validator,JSR-303)简单实现方式

    实现一个完整的表单校验是 Web 应用中非常重要的组成部分。Spring 框架提供了校验的功能,它支持 JSR-303 规范和 Spring Validator 接口两种校验方式。本文将为大家介绍 Spring 校验的简单实现方式。 JSR-303 校验方式 下面将演示一个基于 JSR-303 规范实现的表单校验示例。 引入依赖 首先需要引入 Spring …

    Java 2023年5月19日
    00
  • IntelliJ IDEA打开多个Maven的module且相互调用代码的方法

    IntelliJ IDEA是一款功能强大的Java开发工具,在开发过程中经常需要打开多个Maven的module且相互调用代码,下面将介绍具体操作步骤: 创建Maven module 首先,我们需要创建多个Maven module。 打开IntelliJ IDEA,点击File -> New -> Module,选择Maven,点击Next。 在…

    Java 2023年5月19日
    00
  • java语言注解基础概念详解

    Java语言注解是一种元数据机制,可以对Java代码进行标记和说明。注解是在Java 5中引入的一种新特性,它提供了在代码中添加元数据信息的简单方式。本文将介绍Java语言注解的基本概念。 Java注解的定义和基本语法 Java注解定义了一种语法格式,用来标记Java代码。Java注解的定义格式如下所示: @注解名(参数列表) public class Cl…

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