24位PCM取樣資料轉成16位演算法,已實現PCM轉WAV線上工具原始碼支援24bits、16bits、8bits
阿新 • • 發佈:2021-01-03
[TOC]
> 最近收到幾個24位的PCM錄音原始檔,Recoder庫原有的PCM轉WAV工具只支援8位和16位,於是就升級一下支援了24位的PCM原始檔。
>
> 可能是搜尋方法不對,搜尋了半天沒有找到24位轉成16位的演算法,但好在運氣還不錯看到一篇標題不太想關的文章裡面有成套的轉換演算法。
## 演算法來源
24位PCM轉成32位浮點數參考文章:[https://www.codeproject.com/articles/501521/how-to-convert-between-most-audio-formats-in-net](https://www.codeproject.com/articles/501521/how-to-convert-between-most-audio-formats-in-net) 裡面的`Convert24BitToFloat`函式,轉成了32位浮點數就很容易轉成16位或8位了。
## js版24位PCM轉8位、16位程式碼
```javascript
var pcm24=... Uint8Array二進位制陣列 ...;
var pcm16=new Int16Array(pcm24.length/3);
var pcm8=new Uint8Array(pcm24.length/3);
for(var i