Commit f1b8a2de authored by martin hou's avatar martin hou

fix: 修复单个录音的波形图显示

parent c2355191
......@@ -223,32 +223,12 @@ export function Home() {
});
}
// 先创建audio-worker,给到后面使用
const audioWorker = new Worker(new URL('./audio-worker.js', import.meta.url), { type: 'module' });
const waveformWorker = new Worker(new URL('./waveform-worker.js', import.meta.url), { type: 'module' });
waveformWorker.onmessage = (e) => {
console.log('waveformWorker', e);
}
audioWorker.onmessage = (e) => {
// console.log(e);
if (e.data.waveformData)
if (e.data.waveform)
{
console.log('waveform', e.data.waveformData);
// 把e.data.waveformData追加到waveformData的末尾
// let waveform = [];
/*
for (let i = 0; i < e.data.waveformData.length; i++)
{
waveform.push(e.data.waveformData[i]);
}
*/
// 把waveform追加到waveformData的末尾
// waveformData.push(...waveform);
const waveform = e.data.waveformData;
// console.log(waveformData);
console.log('waveform', e.data.waveform);
const waveform = e.data.waveform;
// 更新波形图waveformCanvas
const canvas = document.getElementById('waveformCanvas') as HTMLCanvasElement;
const ctx = canvas.getContext('2d');
......@@ -273,24 +253,17 @@ export function Home() {
let half = height / 2;
let x = 0;
let y = half;
// ctx.beginPath();
// ctx.moveTo(x, y);
for (let i = 0, x = 0; i < waveform.length; i++)
{
let v = waveform[i] / 128.0;
// y = half - v * height / 2 + 2;
y = (v * height / 2);
ctx.beginPath();
ctx.moveTo(x, half - Math.min(y, half));
ctx.lineTo(x, half + Math.min(y, half));
ctx.stroke();
ctx.closePath();
// 把y反转一下,y = height - y
// ctx.lineTo(x, height - y);
x += 3;
}
// ctx.stroke();
// ctx.closePath();
}
}
......@@ -335,7 +308,7 @@ export function Home() {
const mp3data:any[] = [];
const test = async () => {
let idx = prompt('请输入文件序号', '8');
let idx = prompt('请输入文件序号', '0');
if (idx === null || idx === undefined) return;
let file = files[parseInt(idx)];
if (file === null || file === undefined) return alert('文件不存在');
......@@ -386,8 +359,9 @@ export function Home() {
let name = 'block-' + i;
// audioWorker.postMessage({ data: block, name: name });
audioContext.decodeAudioData(block).then((buffer) => {
// console.log('decodeAudioData' + i, buffer);
waveformWorker.postMessage({ id: name, pcmdata: buffer });
const channelData = buffer.getChannelData(0);
console.log('channelData', channelData);
waveformWorker.postMessage({ id: name, pcmdata: channelData });
}).catch((err) => {
console.log('decodeAudioData' + i, err);
});
......
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