Files
fys-Multi-tenant/fys-admin/src/main/java/com/fuyuanshen/app/controller/AppVideoController.java

77 lines
2.9 KiB
Java
Raw Normal View History

package com.fuyuanshen.app.controller;
import com.fuyuanshen.app.service.AudioProcessService;
import com.fuyuanshen.app.service.VideoProcessService;
import com.fuyuanshen.common.core.domain.R;
import com.fuyuanshen.common.idempotent.annotation.RepeatSubmit;
import com.fuyuanshen.common.web.core.BaseController;
2025-11-21 16:24:07 +08:00
import com.fuyuanshen.equipment.utils.FileHashUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
* APP 视频处理控制器
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/app/video")
public class AppVideoController extends BaseController {
private final VideoProcessService videoProcessService;
private final AudioProcessService audioProcessService;
2025-11-21 16:24:07 +08:00
private final FileHashUtil fileHashUtil;
@PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
2025-11-21 16:24:07 +08:00
@RepeatSubmit(interval = 2, timeUnit = TimeUnit.SECONDS, message = "请勿重复提交!")
public R<List<String>> uploadVideo(@RequestParam("file") MultipartFile file) throws IOException {
// 输出文件基本信息
System.out.println("FileName: " + file.getOriginalFilename());
System.out.println("FileSize: " + file.getSize());
System.out.println("ContentType: " + file.getContentType());
String fileHash = fileHashUtil.hash(file);
System.out.println("fileHash:" + fileHash);
// 可以添加更多视频属性检查
return R.ok(videoProcessService.processVideo(file));
}
2025-11-21 16:24:07 +08:00
/**
* 上传音频文件并转码
*/
@PostMapping(value = "/audio", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
2025-11-21 16:24:07 +08:00
@RepeatSubmit(interval = 2, timeUnit = TimeUnit.SECONDS, message = "请勿重复提交!")
public R<List<String>> uploadAudio(@RequestParam("file") MultipartFile file) {
return R.ok(audioProcessService.processAudio(file));
}
/**
* 文字转音频TTS服务
*/
@GetMapping("/audioTTS")
2025-11-21 16:24:07 +08:00
@RepeatSubmit(interval = 2, timeUnit = TimeUnit.SECONDS, message = "请勿重复提交!")
public R<List<String>> uploadAudioTTS(@RequestParam String text) throws IOException {
return R.ok(audioProcessService.generateStandardPcmData(text));
}
/**
* 提取文本内容只支持txt/docx
*/
@PostMapping(value = "/extract", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
2025-11-21 16:24:07 +08:00
@RepeatSubmit(interval = 2, timeUnit = TimeUnit.SECONDS, message = "请勿重复提交!")
public R<String> extract(@RequestParam("file") MultipartFile file) throws Exception {
2025-11-21 16:24:07 +08:00
return R.ok("Success", audioProcessService.extract(file));
}
2025-11-25 14:51:10 +08:00
}