recorder-app.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import UNI_APP from '@/.env.js';
  2. const rc = uni.getRecorderManager();
  3. // 录音开始时间
  4. let startTime = null;
  5. let start = () => {
  6. return new Promise((resolve, reject) => {
  7. rc.onStart(() => {
  8. startTime = new Date();
  9. resolve()
  10. });
  11. rc.onError((e) => {
  12. console.log(e);
  13. reject(e)
  14. })
  15. rc.start({
  16. format: 'mp3' // 录音格式,可选值:aac/mp3
  17. });
  18. })
  19. }
  20. let pause = () => {
  21. rc.stop();
  22. }
  23. let close = () => {
  24. rc.stop();
  25. }
  26. let upload = () => {
  27. return new Promise((resolve, reject) => {
  28. rc.onStop((wavFile, a, b) => {
  29. uni.uploadFile({
  30. url: UNI_APP.BASE_URL + '/file/upload',
  31. header: {
  32. accessToken: uni.getStorageSync("loginInfo").accessToken
  33. },
  34. filePath: wavFile.tempFilePath,
  35. name: 'file',
  36. success: (res) => {
  37. const duration = (new Date().getTime() - startTime.getTime()) / 1000
  38. const data = {
  39. duration: Math.round(duration),
  40. url: JSON.parse(res.data).data
  41. }
  42. resolve(data);
  43. },
  44. fail: (e) => {
  45. reject(e);
  46. }
  47. })
  48. });
  49. })
  50. }
  51. export {
  52. start,
  53. pause,
  54. close,
  55. upload
  56. }