【JavaScript】后端返回的二进制流音频数据或本地音频资源,前端如何播放?
努力挣钱的小鑫 2024-07-20 14:03:01 阅读 50
一、接口设置
<code>// 语音播放
export const getVoicePlay = (content: string) => {
return requestVoice({
url: '/tts/?text_prompt=' + content,
method: 'get',code>
responseType: 'blob', // 返回类型blob
});
};
二、数据处理播放
getVoicePlay(item.content).then((res: any) => {
console.log(res);
const blob = new Blob([res], { type: 'audio/wav' });
const localUrl = (window.URL || webkitURL).createObjectURL(blob);
const audio = document.createElement('audio');
audio.style.display = 'none'; // 防止影响页面布局
audio.controls = true;
document.body.appendChild(audio);
audio.src = localUrl;
audio.playbackRate = 1.3; // 语速
audio.play();
// 语音播放完毕后,需要手动释放内存
audio.onended = function () {
document.body.removeChild(audio);
URL.revokeObjectURL(localUrl);
};
});
三、本地音频资源播放
如果我们要使用本地的音频资源,在 vue3 中那么我们需要对资源的地址做一下处理
// 动态获取本地的音频资源路径
const getWav = (index: number) => {
return new URL(`/voice/voice${ index}.wav`, import.meta.url).href;
};
// 播放音频
const playVoice = (index: number) => {
const wavFile = getWav(index);
const audio = document.createElement('audio');
audio.style.display = 'none'; // 防止影响页面布局
audio.controls = true;
document.body.appendChild(audio);
audio.src = wavFile;
audio.playbackRate = 1.3;
audio.play();
// 语音播放完毕后,需要手动释放内存
audio.onended = function () {
document.body.removeChild(audio);
};
};
感谢
后端返回二进制流音频数据,怎么让其可播放
前端播放二进制语音流
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。