+
105
-

回答

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

网友回复

我知道答案,我要回答