[英]Compress Audio Buffer size in Javascript
我的主要目標是使用 JavaScript 壓縮音頻文件以減小其大小。 但棘手的部分是我應該為我的用例抱怨的所有限制和要求:
在我看來,基於 Web 音頻 API AudioBuffer 的庫或用於減少數據大小的算法將是最好的解決方案,因為即使它與用於音頻的 NodeJS 庫不兼容,希望我能夠修補它以便它在我的用例。
我找到了一個音頻編碼器 javascript 庫,它可以在節點和瀏覽器中運行,名為lamejs
。
所以我需要實現的可以如下完成:
const mp3encoder = new lamejs.Mp3Encoder(1, SAMPLE_RATE, KBPS);
let samples = audioBuffer.getChannelData(0).map(x => x * 32767.5);
const encoded = mp3encoder.encodeBuffer(samples);
mp3Data.push(encoded);
mp3Data.push(mp3encoder.flush());
請注意,您需要標准化音頻音量,因為在典型的 AudioBuffer 中,數據存儲為 0 和 1 之間的浮點數,這就是為什么在讀取通道數據時應將其乘以 32767.5 以與lamejs
兼容;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.