recorder-app.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. let r = JSON.parse(res.data);
  38. if (r.code != 200) {
  39. reject(r.message);
  40. } else {
  41. const duration = (new Date().getTime() - startTime.getTime()) /
  42. 1000
  43. const data = {
  44. duration: Math.round(duration),
  45. url: r.data
  46. }
  47. resolve(data);
  48. }
  49. },
  50. fail: (e) => {
  51. reject(e);
  52. }
  53. })
  54. });
  55. })
  56. }
  57. export {
  58. start,
  59. pause,
  60. close,
  61. upload
  62. }