recorder-h5.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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. let r = JSON.parse(res.data);
  33. if(r.code != 200){
  34. console.log(res)
  35. reject(r.message);
  36. }else {
  37. const data = {
  38. duration: parseInt(rc.duration),
  39. url: r.data
  40. }
  41. resolve(data);
  42. }
  43. },
  44. fail: (e) => {
  45. reject(e);
  46. }
  47. })
  48. })
  49. }
  50. export {
  51. start,
  52. pause,
  53. close,
  54. upload
  55. }