|
@ -57,14 +57,16 @@ const audioPreloadStatus = { |
|
|
two: { loaded: false, url: null }, |
|
|
two: { loaded: false, url: null }, |
|
|
three: { loaded: false, url: null }, |
|
|
three: { loaded: false, url: null }, |
|
|
four: { loaded: false, url: null }, |
|
|
four: { loaded: false, url: null }, |
|
|
|
|
|
five: { loaded: false, url: null }, |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
// 音频队列顺序管理 |
|
|
// 音频队列顺序管理 |
|
|
const audioQueueOrder = { |
|
|
const audioQueueOrder = { |
|
|
"API1-第一个": 1, |
|
|
|
|
|
"API2-第二个": 2, |
|
|
|
|
|
"API3-第三个": 3, |
|
|
|
|
|
"API4-第四个": 4, |
|
|
|
|
|
|
|
|
"API1-第一个": 1, // 第一个接口的第一个音频 (link1) |
|
|
|
|
|
"API1-第二个": 2, // 第一个接口的第二个音频 (link) |
|
|
|
|
|
"API2-第一个": 3, // 第二个接口的第一个音频 (link3) |
|
|
|
|
|
"API2-第二个": 4, // 第二个接口的第二个音频 (link1) |
|
|
|
|
|
"API3-第一个": 5, // 第三个接口的音频 (link) |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
// 播放下一个音频的函数 |
|
|
// 播放下一个音频的函数 |
|
@ -277,6 +279,7 @@ const toggleVoiceForUser = (index) => { |
|
|
audioPreloadStatus.two = { loaded: false, url: null }; |
|
|
audioPreloadStatus.two = { loaded: false, url: null }; |
|
|
audioPreloadStatus.three = { loaded: false, url: null }; |
|
|
audioPreloadStatus.three = { loaded: false, url: null }; |
|
|
audioPreloadStatus.four = { loaded: false, url: null }; |
|
|
audioPreloadStatus.four = { loaded: false, url: null }; |
|
|
|
|
|
audioPreloadStatus.five = { loaded: false, url: null }; |
|
|
if (chatStore.messages[index].audioArray[0]) { |
|
|
if (chatStore.messages[index].audioArray[0]) { |
|
|
audioPreloadStatus.one.loaded = true; |
|
|
audioPreloadStatus.one.loaded = true; |
|
|
audioPreloadStatus.one.url = chatStore.messages[index].audioArray[0]; |
|
|
audioPreloadStatus.one.url = chatStore.messages[index].audioArray[0]; |
|
@ -1309,7 +1312,25 @@ watch( |
|
|
].audioStatus = false; |
|
|
].audioStatus = false; |
|
|
} |
|
|
} |
|
|
console.log( |
|
|
console.log( |
|
|
"音频队列:添加API1音频,当前队列长度:", |
|
|
|
|
|
|
|
|
"音频队列:添加API1-1音频(link1),当前队列长度:", |
|
|
|
|
|
audioQueue.value.length |
|
|
|
|
|
); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 添加第二个音频(link)到队列 |
|
|
|
|
|
if (audioPreloadStatus.two.url) { |
|
|
|
|
|
chatStore.messages[chatStore.inputUserIndex].audioArray.push( |
|
|
|
|
|
audioPreloadStatus.two.url |
|
|
|
|
|
); |
|
|
|
|
|
if (chatStore.currentUserIndex == chatStore.inputUserIndex) { |
|
|
|
|
|
addToAudioQueue(audioPreloadStatus.two.url, "API1-第二个"); |
|
|
|
|
|
} else { |
|
|
|
|
|
chatStore.messages[ |
|
|
|
|
|
chatStore.inputUserIndex |
|
|
|
|
|
].audioStatus = false; |
|
|
|
|
|
} |
|
|
|
|
|
console.log( |
|
|
|
|
|
"音频队列:添加API1-2音频(link),当前队列长度:", |
|
|
audioQueue.value.length |
|
|
audioQueue.value.length |
|
|
); |
|
|
); |
|
|
} |
|
|
} |
|
@ -1488,20 +1509,37 @@ watch( |
|
|
apiStatus.two.executed = true; |
|
|
apiStatus.two.executed = true; |
|
|
console.log("执行TwoAPI代码:", apiStatus.two.result); |
|
|
console.log("执行TwoAPI代码:", apiStatus.two.result); |
|
|
|
|
|
|
|
|
// 将第二个音频添加到播放队列(确保顺序:API2) |
|
|
|
|
|
if (audioPreloadStatus.two.url) { |
|
|
|
|
|
|
|
|
// 将第二个接口的音频添加到播放队列(确保顺序:API2) |
|
|
|
|
|
if (audioPreloadStatus.three.url) { |
|
|
chatStore.messages[chatStore.inputUserIndex].audioArray.push( |
|
|
chatStore.messages[chatStore.inputUserIndex].audioArray.push( |
|
|
audioPreloadStatus.two.url |
|
|
|
|
|
|
|
|
audioPreloadStatus.three.url |
|
|
); |
|
|
); |
|
|
if (chatStore.currentUserIndex == chatStore.inputUserIndex) { |
|
|
if (chatStore.currentUserIndex == chatStore.inputUserIndex) { |
|
|
addToAudioQueue(audioPreloadStatus.two.url, "API2-第二个"); |
|
|
|
|
|
|
|
|
addToAudioQueue(audioPreloadStatus.three.url, "API2-第一个"); |
|
|
} else { |
|
|
} else { |
|
|
chatStore.messages[ |
|
|
chatStore.messages[ |
|
|
chatStore.inputUserIndex |
|
|
chatStore.inputUserIndex |
|
|
].audioStatus = false; |
|
|
].audioStatus = false; |
|
|
} |
|
|
} |
|
|
console.log( |
|
|
console.log( |
|
|
"音频队列:添加API2音频,当前队列长度:", |
|
|
|
|
|
|
|
|
"音频队列:添加API2-1音频(link3),当前队列长度:", |
|
|
|
|
|
audioQueue.value.length |
|
|
|
|
|
); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (audioPreloadStatus.four.url) { |
|
|
|
|
|
chatStore.messages[chatStore.inputUserIndex].audioArray.push( |
|
|
|
|
|
audioPreloadStatus.four.url |
|
|
|
|
|
); |
|
|
|
|
|
if (chatStore.currentUserIndex == chatStore.inputUserIndex) { |
|
|
|
|
|
addToAudioQueue(audioPreloadStatus.four.url, "API2-第二个"); |
|
|
|
|
|
} else { |
|
|
|
|
|
chatStore.messages[ |
|
|
|
|
|
chatStore.inputUserIndex |
|
|
|
|
|
].audioStatus = false; |
|
|
|
|
|
} |
|
|
|
|
|
console.log( |
|
|
|
|
|
"音频队列:添加API2-2音频(link1),当前队列长度:", |
|
|
audioQueue.value.length |
|
|
audioQueue.value.length |
|
|
); |
|
|
); |
|
|
} |
|
|
} |
|
@ -1577,15 +1615,15 @@ watch( |
|
|
apiStatus.three.executed = true; |
|
|
apiStatus.three.executed = true; |
|
|
console.log("执行ThreeAPI代码:", apiStatus.three.result); |
|
|
console.log("执行ThreeAPI代码:", apiStatus.three.result); |
|
|
|
|
|
|
|
|
// 将第三个音频添加到播放队列(确保顺序:API3) |
|
|
|
|
|
if (audioPreloadStatus.three.url) { |
|
|
|
|
|
|
|
|
// 将第三个接口的音频添加到播放队列(确保顺序:API3) |
|
|
|
|
|
if (audioPreloadStatus.five.url) { |
|
|
chatStore.messages[chatStore.inputUserIndex].audioArray.push( |
|
|
chatStore.messages[chatStore.inputUserIndex].audioArray.push( |
|
|
audioPreloadStatus.three.url |
|
|
|
|
|
|
|
|
audioPreloadStatus.five.url |
|
|
); |
|
|
); |
|
|
if (chatStore.currentUserIndex == chatStore.inputUserIndex) { |
|
|
if (chatStore.currentUserIndex == chatStore.inputUserIndex) { |
|
|
addToAudioQueue( |
|
|
addToAudioQueue( |
|
|
audioPreloadStatus.three.url, |
|
|
|
|
|
"API3-第三个" |
|
|
|
|
|
|
|
|
audioPreloadStatus.five.url, |
|
|
|
|
|
"API3-第一个" |
|
|
); |
|
|
); |
|
|
} else { |
|
|
} else { |
|
|
chatStore.messages[ |
|
|
chatStore.messages[ |
|
@ -1593,7 +1631,7 @@ watch( |
|
|
].audioStatus = false; |
|
|
].audioStatus = false; |
|
|
} |
|
|
} |
|
|
console.log( |
|
|
console.log( |
|
|
"音频队列:添加API3音频,当前队列长度:", |
|
|
|
|
|
|
|
|
"音频队列:添加API3音频(link),当前队列长度:", |
|
|
audioQueue.value.length |
|
|
audioQueue.value.length |
|
|
); |
|
|
); |
|
|
} |
|
|
} |
|
@ -1716,13 +1754,19 @@ watch( |
|
|
apiStatus.one.completed = true; |
|
|
apiStatus.one.completed = true; |
|
|
apiStatus.one.result = result21; |
|
|
apiStatus.one.result = result21; |
|
|
|
|
|
|
|
|
// 预加载第一个接口的音频 |
|
|
|
|
|
if (result21?.data?.link) { |
|
|
|
|
|
await preloadAudio(result21.data.link.trim(), "one"); |
|
|
|
|
|
|
|
|
// 预加载第一个接口的音频 - link1和link |
|
|
|
|
|
if (result21?.data?.link1) { |
|
|
|
|
|
await preloadAudio(result21.data.link1.trim(), "one"); |
|
|
} else { |
|
|
} else { |
|
|
audioPreloadStatus.one.loaded = true; |
|
|
audioPreloadStatus.one.loaded = true; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (result21?.data?.link) { |
|
|
|
|
|
await preloadAudio(result21.data.link.trim(), "two"); |
|
|
|
|
|
} else { |
|
|
|
|
|
audioPreloadStatus.two.loaded = true; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// 检查是否可以执行 |
|
|
// 检查是否可以执行 |
|
|
checkAndExecuteInOrder(); |
|
|
checkAndExecuteInOrder(); |
|
|
} catch (error) { |
|
|
} catch (error) { |
|
@ -1730,6 +1774,7 @@ watch( |
|
|
apiStatus.one.completed = true; |
|
|
apiStatus.one.completed = true; |
|
|
apiStatus.one.error = error; |
|
|
apiStatus.one.error = error; |
|
|
audioPreloadStatus.one.loaded = true; // 失败时也标记为已处理 |
|
|
audioPreloadStatus.one.loaded = true; // 失败时也标记为已处理 |
|
|
|
|
|
audioPreloadStatus.two.loaded = true; // 失败时也标记为已处理 |
|
|
// 即使失败也要检查后续执行 |
|
|
// 即使失败也要检查后续执行 |
|
|
checkAndExecuteInOrder(); |
|
|
checkAndExecuteInOrder(); |
|
|
} |
|
|
} |
|
@ -1746,11 +1791,17 @@ watch( |
|
|
apiStatus.two.completed = true; |
|
|
apiStatus.two.completed = true; |
|
|
apiStatus.two.result = result22; |
|
|
apiStatus.two.result = result22; |
|
|
|
|
|
|
|
|
// 预加载第二个接口的音频 |
|
|
|
|
|
if (result22?.data?.link) { |
|
|
|
|
|
await preloadAudio(result22.data.link.trim(), "two"); |
|
|
|
|
|
|
|
|
// 预加载第二个接口的音频 - link3和link1 |
|
|
|
|
|
if (result22?.data?.link3) { |
|
|
|
|
|
await preloadAudio(result22.data.link3.trim(), "three"); |
|
|
} else { |
|
|
} else { |
|
|
audioPreloadStatus.two.loaded = true; |
|
|
|
|
|
|
|
|
audioPreloadStatus.three.loaded = true; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (result22?.data?.link1) { |
|
|
|
|
|
await preloadAudio(result22.data.link1.trim(), "four"); |
|
|
|
|
|
} else { |
|
|
|
|
|
audioPreloadStatus.four.loaded = true; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 检查是否可以执行 |
|
|
// 检查是否可以执行 |
|
@ -1759,7 +1810,8 @@ watch( |
|
|
console.error("TwoAPI失败:", error); |
|
|
console.error("TwoAPI失败:", error); |
|
|
apiStatus.two.completed = true; |
|
|
apiStatus.two.completed = true; |
|
|
apiStatus.two.error = error; |
|
|
apiStatus.two.error = error; |
|
|
audioPreloadStatus.two.loaded = true; |
|
|
|
|
|
|
|
|
audioPreloadStatus.three.loaded = true; |
|
|
|
|
|
audioPreloadStatus.four.loaded = true; |
|
|
checkAndExecuteInOrder(); |
|
|
checkAndExecuteInOrder(); |
|
|
} |
|
|
} |
|
|
}; |
|
|
}; |
|
@ -1777,13 +1829,9 @@ watch( |
|
|
apiStatus.three.completed = true; |
|
|
apiStatus.three.completed = true; |
|
|
apiStatus.three.result = result23; |
|
|
apiStatus.three.result = result23; |
|
|
|
|
|
|
|
|
// 预加载第三个接口的音频 |
|
|
|
|
|
if (result23?.data?.link1) { |
|
|
|
|
|
await preloadAudio(result23.data.link1.trim(), "three"); |
|
|
|
|
|
if (result23.data.link2 != "") { |
|
|
|
|
|
await preloadAudio(result23.data.link2.trim(), "four"); |
|
|
|
|
|
} |
|
|
|
|
|
await preloadAudio(result23.data.link3.trim(), "five"); |
|
|
|
|
|
|
|
|
// 预加载第三个接口的音频 - 只有link字段 |
|
|
|
|
|
if (result23?.data?.link) { |
|
|
|
|
|
await preloadAudio(result23.data.link.trim(), "five"); |
|
|
} else { |
|
|
} else { |
|
|
audioPreloadStatus.three.loaded = true; |
|
|
audioPreloadStatus.three.loaded = true; |
|
|
} |
|
|
} |
|
@ -1865,6 +1913,7 @@ watch( |
|
|
audioPreloadStatus.two = { loaded: false, url: null }; |
|
|
audioPreloadStatus.two = { loaded: false, url: null }; |
|
|
audioPreloadStatus.three = { loaded: false, url: null }; |
|
|
audioPreloadStatus.three = { loaded: false, url: null }; |
|
|
audioPreloadStatus.four = { loaded: false, url: null }; |
|
|
audioPreloadStatus.four = { loaded: false, url: null }; |
|
|
|
|
|
audioPreloadStatus.five = { loaded: false, url: null }; |
|
|
|
|
|
|
|
|
// 🔧 新增:清理音频实例 |
|
|
// 🔧 新增:清理音频实例 |
|
|
if (audioStore.soundInstance) { |
|
|
if (audioStore.soundInstance) { |
|
|