|
|
@ -30,6 +30,7 @@ import com.theokanning.openai.service.OpenAiService; |
|
|
|
import lombok.RequiredArgsConstructor; |
|
|
|
import lombok.RequiredArgsConstructor; |
|
|
|
import lombok.SneakyThrows; |
|
|
|
import lombok.SneakyThrows; |
|
|
|
import okhttp3.ResponseBody; |
|
|
|
import okhttp3.ResponseBody; |
|
|
|
|
|
|
|
import org.bytedeco.javacv.FFmpegFrameGrabber; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
import org.springframework.web.multipart.MultipartFile; |
|
|
|
import org.springframework.web.multipart.MultipartFile; |
|
|
@ -117,6 +118,12 @@ public class ImContentServiceImpl extends ServiceImpl<ImContentMapper, ImContent |
|
|
|
.build(); |
|
|
|
.build(); |
|
|
|
ResponseBody responseBody = openAiService.createSpeech(createSpeechRequest); |
|
|
|
ResponseBody responseBody = openAiService.createSpeech(createSpeechRequest); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 获取音频时长
|
|
|
|
|
|
|
|
FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(responseBody.byteStream()); |
|
|
|
|
|
|
|
grabber.start(); |
|
|
|
|
|
|
|
long durationInSec = grabber.getFormatContext().duration() / 1000000; |
|
|
|
|
|
|
|
grabber.close(); |
|
|
|
|
|
|
|
|
|
|
|
// 构建发送文件信息进行OSS存储
|
|
|
|
// 构建发送文件信息进行OSS存储
|
|
|
|
OssFile receiveOssOssFile = new OssFile() |
|
|
|
OssFile receiveOssOssFile = new OssFile() |
|
|
|
.setFileName(receiveFileName) |
|
|
|
.setFileName(receiveFileName) |
|
|
@ -124,6 +131,7 @@ public class ImContentServiceImpl extends ServiceImpl<ImContentMapper, ImContent |
|
|
|
.setOriginal(speechName) |
|
|
|
.setOriginal(speechName) |
|
|
|
.setType(FileUtil.extName(speechName)) |
|
|
|
.setType(FileUtil.extName(speechName)) |
|
|
|
.setFileSize(responseBody.contentLength()) |
|
|
|
.setFileSize(responseBody.contentLength()) |
|
|
|
|
|
|
|
.setDuration(durationInSec) |
|
|
|
.setMimeType(Objects.requireNonNull(responseBody.contentType()).toString()); |
|
|
|
.setMimeType(Objects.requireNonNull(responseBody.contentType()).toString()); |
|
|
|
ossTemplate.putObject(ossProperties.getBucketName(), receiveFileName, Objects.requireNonNull(responseBody.contentType()).toString(), responseBody.byteStream()); |
|
|
|
ossTemplate.putObject(ossProperties.getBucketName(), receiveFileName, Objects.requireNonNull(responseBody.contentType()).toString(), responseBody.byteStream()); |
|
|
|
String receiveVoiceUrl = ossTemplate.getObjectURL(ossProperties.getBucketName(), receiveFileName); |
|
|
|
String receiveVoiceUrl = ossTemplate.getObjectURL(ossProperties.getBucketName(), receiveFileName); |
|
|
|