recorder-h5.js 932 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import Recorder from 'js-audio-recorder';
  2. import UNI_APP from '@/.env.js';
  3. let rc = null;
  4. let start = () => {
  5. if(rc != null){
  6. close();
  7. }
  8. rc = new Recorder();
  9. return rc.start();
  10. }
  11. let pause = () => {
  12. rc.pause();
  13. }
  14. let close = () => {
  15. rc.destroy();
  16. rc = null;
  17. }
  18. let upload = () => {
  19. return new Promise((resolve, reject) => {
  20. const wavBlob = rc.getWAVBlob();
  21. const newbolb = new Blob([wavBlob], { type: 'audio/wav'})
  22. const name = new Date().getDate() + '.wav';
  23. const file = new File([newbolb], name)
  24. uni.uploadFile({
  25. url: UNI_APP.BASE_URL + '/file/upload',
  26. header: {
  27. accessToken: uni.getStorageSync("loginInfo").accessToken
  28. },
  29. file: file,
  30. name: 'file',
  31. success: (res) => {
  32. const data = {
  33. duration: parseInt(rc.duration),
  34. url: JSON.parse(res.data).data
  35. }
  36. resolve(data);
  37. },
  38. fail: (e) => {
  39. reject(e);
  40. }
  41. })
  42. })
  43. }
  44. export {
  45. start,
  46. pause,
  47. close,
  48. upload
  49. }