audioedit.controller.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. const router_1 = __importDefault(require("@koa/router"));
  7. const audioedit_service_1 = require("./audioedit.service");
  8. const router = new router_1.default();
  9. /**
  10. * 裁剪音频
  11. * POST /api/audio/trim
  12. */
  13. router.post('/trim', async (ctx) => {
  14. try {
  15. const { audioId, startTime, endTime } = ctx.request.body;
  16. if (!audioId || startTime === undefined || endTime === undefined) {
  17. ctx.body = {
  18. code: 400,
  19. message: '缺少必填字段',
  20. };
  21. return;
  22. }
  23. if (startTime >= endTime) {
  24. ctx.body = {
  25. code: 400,
  26. message: '起始时间必须小于结束时间',
  27. };
  28. return;
  29. }
  30. const result = await audioedit_service_1.audioEditService.trimAudio(audioId, startTime, endTime);
  31. ctx.body = {
  32. code: 0,
  33. message: 'success',
  34. data: result,
  35. };
  36. }
  37. catch (error) {
  38. ctx.body = {
  39. code: 400,
  40. message: error.message || '裁剪失败',
  41. };
  42. }
  43. });
  44. /**
  45. * 合并音频
  46. * POST /api/audio/merge
  47. */
  48. router.post('/merge', async (ctx) => {
  49. try {
  50. const { audioIds, order } = ctx.request.body;
  51. if (!audioIds || audioIds.length < 2) {
  52. ctx.body = {
  53. code: 400,
  54. message: '至少需要两个音频才能合并',
  55. };
  56. return;
  57. }
  58. const mergeOrder = order || audioIds.map((_, i) => i);
  59. const result = await audioedit_service_1.audioEditService.mergeAudios(audioIds, mergeOrder);
  60. ctx.body = {
  61. code: 0,
  62. message: 'success',
  63. data: result,
  64. };
  65. }
  66. catch (error) {
  67. ctx.body = {
  68. code: 400,
  69. message: error.message || '合并失败',
  70. };
  71. }
  72. });
  73. /**
  74. * 获取音频信息
  75. * GET /api/audio/:audioId/info
  76. */
  77. router.get('/:audioId/info', async (ctx) => {
  78. try {
  79. const { audioId } = ctx.params;
  80. const result = await audioedit_service_1.audioEditService.getAudioInfo(audioId);
  81. ctx.body = {
  82. code: 0,
  83. message: 'success',
  84. data: result,
  85. };
  86. }
  87. catch (error) {
  88. ctx.body = {
  89. code: 400,
  90. message: error.message || '获取音频信息失败',
  91. };
  92. }
  93. });
  94. exports.default = router;