Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
L
live-management-web
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
haojie
live-management-web
Commits
5e4e82bd
Commit
5e4e82bd
authored
Aug 11, 2023
by
haojie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
submit
parent
599d2e2e
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
30 additions
and
9 deletions
+30
-9
src/pages/home/index.vue
+7
-4
src/utils/audio.ts
+17
-5
src/utils/tool.ts
+1
-0
src/worker/audioConversion.ts
+5
-0
No files found.
src/pages/home/index.vue
View file @
5e4e82bd
...
@@ -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
>
...
...
src/utils/audio.ts
View file @
5e4e82bd
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
;
...
...
src/utils/tool.ts
View file @
5e4e82bd
...
@@ -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'
,
...
...
src/worker/audioConversion.ts
0 → 100644
View file @
5e4e82bd
self
.
addEventListener
(
'message'
,
(
event
)
=>
{
// 接收到消息后的处理逻辑
const
message
=
event
.
data
;
console
.
log
(
'接收到消息:'
,
message
);
});
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment