1、录制声音上传
通过tt.getRecorderManager录制声音然后调用tt.uploadFile上传到后端即可。
var DEFAULT_COUNT_DOWN = 60000;
var cdtimer;
Page({
data: {
cd: DEFAULT_COUNT_DOWN,
isRecording: false,
isPaused: false,
recordOption: {
duration: DEFAULT_COUNT_DOWN,
sampleRate: 16000,
encodeBitRate: 48000,
numberOfChannels: 2,
format: 'aac',
frameSize: 100
},
recordFilePath: ''
},
startCountDown() {
this.setData({
cd: DEFAULT_COUNT_DOWN
});
clearInterval(cdtimer);
cdtimer = setInterval(() => {
this.setData({
cd: this.data.cd - 100
});
}, 100);
},
pauseCountDown() {
clearInterval(cdtimer);
},
continueCountDown() {
clearInterval(cdtimer);
cdtimer = setInterval(() => {
this.setData({
cd: this.data.cd - 100
});
}, 100);
},
stopCountDown() {
clearInterval(cdtimer);
this.setData({
cd: DEFAULT_COUNT_DOWN
});
},
onLoad: function(options) {
this.recorderManager = tt.getRecorderManager();
this.recorderManager.onStart(() => {
this.setData({
isRecording: true,
recordFilePath: '',
isPaused: false
});
this.startCountDown();
});
this.recorderManager.onResume(() => {
this.setData({
isRecording: true,
isPaused: false
});
this.continueCountDown();
});
this.recorderManager.onPause(() => {
this.setData({
isRecording: false,
isPaused: true
});
this.pauseCountDown();
});
this.recorderManager.onStop(({
tempFilePath
}) => {
this.setData({
isRecording: false,
isPaused: false,
recordFilePath: tempFilePath
});
this.stopCountDown();
tt.showToast({
title: '录音结束'
});
});
this.recorderManager.onFrameRecorded(({
frameBuffer,
isLastFrame
}) => {});
this.recorderManager.onError(err => {
console.error(err);
});
},
onUnload: function() {
this.stop();
clearInterval(cdtimer);
},
start() {
if (this.data.isRecording) {
tt.showToast({
title: '正在录音'
});
} else {
this.recorderManager.start(this.data.recordOption);
}
},
pauseorresume() {
if (this.data.isPaused) {
this.recorderManager.resume();
} else {
this.recorderManager.pause();
}
},
stop() {
this.recorderManager.stop();
}
});
参考:https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/api/media/record/tt-get-recorder-managerhttps://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/api/network/http/tt-upload-file/
2、抖音小程序选择声音文件上传
这个需要用到webview打开h5上传文件页面,最后回调通知抖音小程序了。
参考这个:https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/tutorial/basic-ability/web-view-component
网友回复
ai能写出比黑客还厉害的零日漏洞等攻击工具攻击任意软件系统工程?
js如何获取浏览器的音频上下文指纹、Canvas指纹、WebGL渲染特征?
为啥ai开始抛弃markdown文本,重新偏好html文本了?
网站有没有办法鉴别访问请求是由ai操控chrome-devtools-mcp发出的?
有没有python自动操作浏览器让网站无法鉴别是机器行为?
为啥最新由Meta / 斯坦福 / 哈佛出的ProgramBench基准GPT-5.4、Claude Opus 4.7、Gemini 3.1 Pro 等全部 0% 通过率?
有没有免费的api查询域名是否完成icp工信部备案?
codex用HyperFrames与 Remotion自动做视频那个更好?
claude code中Skill MCP CLI SubAgent Hooks Plugin区别?
浏览器webrtc点对点通讯如何才能走系统代理?


