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

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

  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日

相关文章

  • Spring MVC全局异常实例详解

    Spring MVC全局异常实例详解 Spring MVC是一种基于Java的Web框架,它提供了许多便捷的功能和工具,使得开发者可以更加高效地开发Web应用程序。其中,全局异常处理是Spring MVC中常用的一种技术,本文将详细讲解如何在Spring MVC中实现全局异常处理,并提供两个示例来说明如何实现这一过程。 步骤一:创建Spring MVC项目 …

    Java 2023年5月17日
    00
  • java查找字符串中的包含子字符串的个数实现代码

    下面是“Java查找字符串中的包含子字符串的个数实现代码”的完整攻略。 问题描述 我们需要写一个Java程序,用于在一个字符串中查找指定的子字符串,并返回该子字符串在源字符串中出现的次数。 解决方案 我们可以使用Java内置的字符串函数或正则表达式来实现这个功能,下面是两种不同的方法: 方法一:使用String函数 我们可以使用String类中提供的inde…

    Java 2023年5月27日
    00
  • RocketMQ ConsumeQueue与IndexFile实时更新机制源码解析

    RocketMQ ConsumeQueue与IndexFile实时更新机制源码解析 RocketMQ是一个高性能、高可靠、可伸缩、分布式的消息中间件。在消息投递和消费的过程中,RocketMQ的ConsumeQueue与IndexFile起到了至关重要的作用,本篇文章将对其实时更新机制进行源码解析。 ConsumeQueue介绍 ConsumeQueue是R…

    Java 2023年5月20日
    00
  • 微信小程序 http请求的session管理

    微信小程序通过http请求与服务器交互数据,实现了数据的传输和处理,而session的管理在数据传输中起着至关重要的作用。下面是“微信小程序http请求的session管理”的完整攻略。 一、什么是session? Session是一种记录客户状态的技术。客户端请求服务器后,服务器会创建一个Session对象,将用户状态信息保存其中;并为每个Session对…

    Java 2023年5月23日
    00
  • JPA如何设置表名和实体名,表字段与实体字段的对应

    JPA(Java Persistence API)是Java EE技术规范之一,主要用于ORM(Object-relational mapping)操作。在使用JPA时,有时需要设置表名和实体名,以及将表字段与实体字段对应,本文将为您提供设置表名和实体名、表字段与实体字段对应的完整攻略,本文中所有示例代码均使用Hibernate实现JPA。 设置表名和实体名…

    Java 2023年5月20日
    00
  • springmvc+ajax+formdata上传图片代码实例

    下面我为您详细讲解 “springmvc+ajax+formdata上传图片代码实例” 的完整攻略。 简介 在springmvc框架中,使用ajax向服务器发送请求是非常常见的操作,而其中最常见的请求类型就是上传文件或图片。比如用户注册页面中,我们经常需要用户上传自己的头像。在这种情况下,我们需要运用ajax技术将用户上传的文件或图片发送到服务器进行处理。本…

    Java 2023年5月20日
    00
  • 使用java连接Redis,Maven管理操作

    使用Java连接Redis,本质上是通过Redis的Java客户端来实现。Java开发者可以通过Maven来管理Redis的Java客户端相关依赖,使开发变得更加简单高效。下面,我们将详细介绍如何使用Java连接Redis以及如何通过Maven管理Redis相关依赖。 第一步:引入Redis Java客户端依赖 要使用Java连接Redis,首先需要在Jav…

    Java 2023年5月19日
    00
  • 关于spring boot使用 jdbc+mysql 连接的问题

    请看下面的攻略: 1.引入相关依赖 在pom.xml文件中加入以下依赖: <dependencies> <!– Spring Boot JDBC 依赖 –> <dependency> <groupId>org.springframework.boot</groupId> <artifact…

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