uni-app 录音分片插件需求

发布于 1周前 作者 h691938207 来自 Uni-App

uni-app 录音分片插件需求

录音插件需求

在uni-app中,APP端想要一个录音插件,可暂停录音、继续录音,最主要的是支持实时录音分片数据返回,

7 回复

大文件切片、分块、分段、分片,可用于分块上传、断点续传(ios、android):https://ext.dcloud.net.cn/plugin?id=3319


可以做,联系QQ:1804945430

可以做,联系QQ: 1196097915

大佬你的app端录音和暂停录音解决了吗? 我这急需解决办法 呜呜呜

录音支持暂停、继续(ios、andorid):https://ext.dcloud.net.cn/plugin?id=5849

承接双端(Android,iOS)原生插件开发,uni-app外包项目开发。
接受已有项目的二次开发、修改功能、修复问题bug等任何开发相关的单
QQ:1559653449 VX:fan-rising

针对uni-app中实现录音分片上传的需求,我们可以借助H5+的录音接口和文件分片上传的逻辑来实现。以下是一个简化的代码案例,用于展示如何在uni-app中实现录音分片插件的功能。

首先,确保你的项目已经配置好uni-app开发环境,并且已经引入了必要的依赖。

1. 录音部分

使用plus.audio.createRecorder创建录音对象,并配置相关参数,如音频格式、采样率等。

// 创建录音对象
const recorder = plus.audio.createRecorder({
    src: '_doc/record/', // 录音文件保存路径
    filename: 'test.wav', // 录音文件名
    bitrate: 128000, // 比特率
    samplerate: 44100, // 采样率
    channels: 2 // 声道数
});

// 开始录音
recorder.start();

// 监听录音结束事件
recorder.onended = function () {
    console.log('录音结束');
    // 获取录音文件路径
    const filePath = `_doc/record/${recorder.filename}`;
    // 调用分片上传函数
    uploadFileInChunks(filePath);
};

2. 分片上传部分

使用uni.uploadFile接口实现文件的分片上传。以下是一个简单的分片上传函数示例:

function uploadFileInChunks(filePath) {
    const CHUNK_SIZE = 1024 * 1024; // 每片大小,这里设置为1MB
    
    uni.getFileSystemManager().readFile({
        filePath: filePath,
        encoding: 'binary',
        success: res => {
            const fileData = res.data;
            const totalChunks = Math.ceil(fileData.length / CHUNK_SIZE);
            
            for (let i = 0; i < totalChunks; i++) {
                const start = i * CHUNK_SIZE;
                const end = Math.min(start + CHUNK_SIZE, fileData.length);
                const chunk = fileData.slice(start, end);
                
                // 这里调用你的服务器接口上传分片数据
                // 注意:需要传递分片信息,如分片索引、总片数等
                uni.uploadFile({
                    url: 'https://your-server.com/upload', // 服务器接口地址
                    filePath: '', // 不需要传递文件路径,因为我们传递的是二进制数据
                    name: 'file',
                    data: {
                        chunkIndex: i,
                        totalChunks: totalChunks,
                        fileName: 'test.wav'
                    },
                    header: {
                        'Content-Type': 'application/octet-stream'
                    },
                    fileContent: chunk, // 传递二进制数据
                    success: uploadRes => {
                        console.log(`分片 ${i} 上传成功`);
                        // 处理上传成功逻辑
                    },
                    fail: err => {
                        console.error(`分片 ${i} 上传失败`, err);
                        // 处理上传失败逻辑
                    }
                });
            }
        },
        fail: err => {
            console.error('读取文件失败', err);
        }
    });
}

注意:以上代码仅用于演示基本逻辑,实际项目中需要处理更多的细节,如错误重试、上传进度显示、服务器接口的具体实现等。此外,服务器也需要实现相应的分片合并逻辑。

回到顶部