| 1234567891011121314151617181920212223242526 |
- /**
- * AudioWorklet processor: 收集麦克风 PCM 采样数据
- * 运行在音频线程,通过 MessagePort 将 Float32Array 发回主线程
- */
- class PCMRecorderProcessor extends AudioWorkletProcessor {
- constructor() {
- super()
- this._stopped = false
- this.port.onmessage = (e) => {
- if (e.data === 'stop') this._stopped = true
- }
- }
- process(inputs) {
- if (this._stopped) return false
- const input = inputs[0]
- if (input && input[0] && input[0].length > 0) {
- // 取第一个声道(mono),拷贝一份发给主线程
- this.port.postMessage(new Float32Array(input[0]))
- }
- return true
- }
- }
- registerProcessor('pcm-recorder-processor', PCMRecorderProcessor)
|