uni-app 插件需求 获取APP录音功能并获取音频数据
uni-app 插件需求 获取APP录音功能并获取音频数据
支持ios和android,实现录音,并获取音频数据,用来做音乐律动
6 回复
是指分贝值吗?我有这个插件
对,是分贝值,实时获取分贝值
我使用了你的录音的插件,发现是1秒返回一次分贝值,不能满足我的需求
专业插件开发 q 1196097915
https://ask.dcloud.net.cn/question/91948
可以做,联系QQ:1804945430
在uni-app中,实现APP录音功能并获取音频数据,通常需要使用H5+ API中的RecorderManager
对象。以下是一个简单的代码示例,展示了如何实现这一功能。
首先,确保你的uni-app项目已经正确配置了H5+ API的权限。在manifest.json
中,你需要在app-plus
的distribute
下的plugins
里添加必要的权限,比如RecordAudio
。
接下来,是代码实现部分:
<template>
<view>
<button @click="startRecording">开始录音</button>
<button @click="stopRecording" :disabled="!isRecording">停止录音</button>
<audio :src="audioSrc" v-if="audioSrc" controls></audio>
</view>
</template>
<script>
export default {
data() {
return {
isRecording: false,
recorderManager: null,
audioSrc: null,
};
},
methods: {
startRecording() {
if (this.isRecording) return;
this.isRecording = true;
this.recorderManager = plus.recorder.createRecorder({
audioSrc: '_doc/record/', // 保存路径
audioFormat: 'mp3', // 音频格式
sampleRate: 44100, // 采样率
bitRate: 96000, // 码率
});
this.recorderManager.start({
success: () => {
console.log('录音开始');
},
fail: (err) => {
console.error('录音失败', err);
},
});
},
stopRecording() {
if (!this.isRecording) return;
this.isRecording = false;
this.recorderManager.stop({
success: (res) => {
console.log('录音停止', res);
this.audioSrc = '_www/' + res.files[0]; // 注意路径转换,_doc转为_www可访问
},
fail: (err) => {
console.error('停止录音失败', err);
},
});
},
},
onUnload() {
if (this.recorderManager) {
this.recorderManager.destroy();
}
},
};
</script>
<style>
/* 添加一些简单的样式 */
button {
margin: 10px;
}
audio {
margin-top: 20px;
}
</style>
在这个示例中,我们定义了两个按钮用于控制录音的开始和停止,以及一个用于播放录音的<audio>
元素。当点击“开始录音”按钮时,会创建并启动RecorderManager
对象进行录音;当点击“停止录音”按钮时,会停止录音并获取录音文件的路径,然后将其设置为<audio>
元素的src
属性以播放录音。
请注意,录音文件的保存路径和访问路径在不同的平台上可能有所不同。在真机调试时,你可能需要根据实际情况调整路径。此外,还要确保你的应用已经请求并获得了录音权限。