Commit 5e4e82bd by haojie

submit

parent 599d2e2e
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
<div class="home-tool-bar"> <div class="home-tool-bar">
<CustomTabs v-model="currentTab" theme="dark2"> <CustomTabs v-model="currentTab" theme="dark2">
<CustomTabPanel label="数字人作品" name="1"> <CustomTabPanel label="数字人作品" name="1">
<MyDigtalPeople ref="myDigtalPeopleRef" :reloadNum="reloadNum"></MyDigtalPeople> <MyDigtalPeople :reloadNum="reloadNum"></MyDigtalPeople>
</CustomTabPanel> </CustomTabPanel>
<CustomTabPanel label="数字人草稿" name="2"> <DigitalPeopleDraft></DigitalPeopleDraft> </CustomTabPanel> <CustomTabPanel label="数字人草稿" name="2"> <DigitalPeopleDraft></DigitalPeopleDraft> </CustomTabPanel>
<template #rightComponent> <template #rightComponent>
...@@ -81,11 +81,10 @@ import { getDigitalPeopleList } from '@/service/Common'; ...@@ -81,11 +81,10 @@ import { getDigitalPeopleList } from '@/service/Common';
import Button from '@/components/Button.vue'; import Button from '@/components/Button.vue';
import { callPyjsInWindow } from '@/utils/pyqt'; import { callPyjsInWindow } from '@/utils/pyqt';
import { jumpToCreateLivePage } from '@/router/jump'; import { jumpToCreateLivePage } from '@/router/jump';
import { audioMerge } from '@/utils/audio';
const router = useRouter(); const router = useRouter();
const myDigtalPeopleRef = ref(null);
// 当前tab栏 // 当前tab栏
const currentTab = ref('1'); const currentTab = ref('1');
// 弹窗状态 // 弹窗状态
...@@ -198,7 +197,11 @@ const getList = async () => { ...@@ -198,7 +197,11 @@ const getList = async () => {
onMounted(() => { onMounted(() => {
// 获取我的数字人 // 获取我的数字人
getList(); getList();
console.log(myDigtalPeopleRef.value); // let list = [
// 'http://m10.music.126.net/20230811094657/2ca708dd710fd76bfaa7176ab0a52a01/ymusic/5353/0f0f/0358/d99739615f8e5153d77042092f07fd77.mp3',
// 'http://m10.music.126.net/20230811094657/2ca708dd710fd76bfaa7176ab0a52a01/ymusic/5353/0f0f/0358/d99739615f8e5153d77042092f07fd77.mp3',
// ];
// audioMerge(list);
}); });
</script> </script>
......
import { alyOssUpload, getFileSuffix, show_message } from './tool';
import { v4 } from 'uuid';
import audiobufferToWav from 'audiobuffer-to-wav'; import audiobufferToWav from 'audiobuffer-to-wav';
import request from '@/utils/upLoadRequest'; import request from '@/utils/upLoadRequest';
export const createAudioContext = () => { export const createAudioContext = () => {
return new (window.AudioContext || window.webkitAudioContext)(); return new (window.AudioContext || window.webkitAudioContext)();
}; };
...@@ -38,6 +37,19 @@ export async function audioMerge(filePaths) { ...@@ -38,6 +37,19 @@ export async function audioMerge(filePaths) {
// 使用 Promise 依次解码和添加音频数据到 buffers 数组 // 使用 Promise 依次解码和添加音频数据到 buffers 数组
await Promise.all( await Promise.all(
filePaths.map(async (filePath) => { filePaths.map(async (filePath) => {
// const response = await request.get(filePath, { responseType: 'blob' });
// const blob = response;
// // 获取文件类型
// const fileType = blob.type;
// console.log(fileType);
// // 将blob转换为ArrayBuffer
// const arrayBuffer = await blob.arrayBuffer();
// // 将ArrayBuffer转换为Buffer
// const audioBuffer = await audioContext.decodeAudioData(arrayBuffer);
// return audioBuffer;
const response = await request.get(filePath, { responseType: 'arraybuffer' }); const response = await request.get(filePath, { responseType: 'arraybuffer' });
const arrayBuffer = response; const arrayBuffer = response;
...@@ -47,7 +59,6 @@ export async function audioMerge(filePaths) { ...@@ -47,7 +59,6 @@ export async function audioMerge(filePaths) {
).then((decodedBuffers) => { ).then((decodedBuffers) => {
buffers.push(...decodedBuffers); // 将解码后的音频缓冲区按顺序添加到数组中 buffers.push(...decodedBuffers); // 将解码后的音频缓冲区按顺序添加到数组中
}); });
// 计算合并后的音频数据的长度 // 计算合并后的音频数据的长度
const totalDuration = buffers.reduce((accumulator, current) => accumulator + current.duration, 0); const totalDuration = buffers.reduce((accumulator, current) => accumulator + current.duration, 0);
const sampleRate = audioContext.sampleRate; const sampleRate = audioContext.sampleRate;
...@@ -61,19 +72,20 @@ export async function audioMerge(filePaths) { ...@@ -61,19 +72,20 @@ export async function audioMerge(filePaths) {
); );
let offset = 0; let offset = 0;
// 合并音频数据 // 合并音频数据
buffers.forEach((buffer, index) => { buffers.forEach((buffer, index) => {
for (let channel = 0; channel < channels; channel++) { for (let channel = 0; channel < channels; channel++) {
const sourceData = buffer.getChannelData(channel); const sourceData = buffer.getChannelData(channel);
const targetData = mergedBuffer.getChannelData(channel); const targetData = mergedBuffer.getChannelData(channel);
targetData.set(sourceData, offset); targetData.set(sourceData, offset);
} }
offset += Math.round(buffer.duration * sampleRate); offset += Math.round(buffer.duration * sampleRate);
}); });
console.log(buffers);
console.log('zxl');
// 导出合并后的音频数据为 WAV 文件 // 导出合并后的音频数据为 WAV 文件
const mergedData = exportBufferAsWav(mergedBuffer); const mergedData = exportBufferAsWav(mergedBuffer);
console.log('通过了');
const blob = new Blob([mergedData], { type: 'audio/wav' }); const blob = new Blob([mergedData], { type: 'audio/wav' });
console.log('合并完成', blob); console.log('合并完成', blob);
return blob; return blob;
......
...@@ -225,6 +225,7 @@ export const alyOssUpload = ( ...@@ -225,6 +225,7 @@ export const alyOssUpload = (
if (res === '' || res == 200) { if (res === '' || res == 200) {
// 外网url // 外网url
const url = config.domain + config.dir + fileName + `.${getFileSuffix(item)}`; const url = config.domain + config.dir + fileName + `.${getFileSuffix(item)}`;
console.log(url);
UploadSuccessCallback(fileName, url); UploadSuccessCallback(fileName, url);
resolve({ resolve({
status: 'success', status: 'success',
......
self.addEventListener('message', (event) => {
// 接收到消息后的处理逻辑
const message = event.data;
console.log('接收到消息:', message);
});
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment