Quellcode durchsuchen

单声道 改为双声道

黄琪勇 vor 5 Monaten
Ursprung
Commit
d05135b5a0
1 geänderte Dateien mit 3 neuen und 2 gelöschten Zeilen
  1. 3 2
      src/utils/crunker.ts

+ 3 - 2
src/utils/crunker.ts

@@ -78,9 +78,10 @@ export default class Crunker {
       const output = this._context.createBuffer(this._maxNumberOfChannels(buffers), this._sampleRate * this._maxDuration(buffers), this._sampleRate)
       buffers.forEach((buffer, index) => {
          const offsetNum = Math.round(times[index] * this._sampleRate) //时间偏差
-         for (let channelNumber = 0; channelNumber < buffer.numberOfChannels; channelNumber++) {
+         for (let channelNumber = 0; channelNumber < output.numberOfChannels; channelNumber++) {
             const outputData = output.getChannelData(channelNumber)
-            const bufferData = buffer.getChannelData(channelNumber)
+            // buffers 有可能是单声道,当单声道的时候 取第一个声道的值
+            const bufferData = buffer.getChannelData(buffer.numberOfChannels < 2 ? 0 : channelNumber)
             for (let i = bufferData.length - 1; i >= 0; i--) {
                // 当合并大于1或者小于-1的时候可能会爆音  所以这里取最大值和最小值
                const combinedValue = outputData[i + offsetNum] + bufferData[i]