使用 Web Audio API 合併、連接、播放、匯出和下載音訊檔案的簡單方法。
查看線上演示
yarn add crunker
npm install crunker
let crunker = new Crunker ( ) ;
crunker
. fetchAudio ( '/song.mp3' , '/another-song.mp3' )
. then ( ( buffers ) => {
// => [AudioBuffer, AudioBuffer]
return crunker . mergeAudio ( buffers ) ;
} )
. then ( ( merged ) => {
// => AudioBuffer
return crunker . export ( merged , 'audio/mp3' ) ;
} )
. then ( ( output ) => {
// => {blob, element, url}
crunker . download ( output . blob ) ;
document . body . append ( output . element ) ;
console . log ( output . url ) ;
} )
. catch ( ( error ) => {
// => Error Message
} ) ;
crunker . notSupported ( ( ) => {
// Handle no browser support
} ) ;
let crunker = new Crunker ( ) ;
crunker
. fetchAudio ( '/voice.mp3' , '/background.mp3' )
. then ( ( buffers ) => crunker . mergeAudio ( buffers ) )
. then ( ( merged ) => crunker . export ( merged , 'audio/mp3' ) )
. then ( ( output ) => crunker . download ( output . blob ) )
. catch ( ( error ) => {
throw new Error ( error ) ;
} ) ;
let crunker = new Crunker ( ) ; const onFileInputChange = async ( target ) => { const buffers = await crunker . fetchAudio ( ... target . files , '/voice.mp3' , '/background.mp3' ) ; } ; < input onChange = { onFileInputChange ( this ) } type = "file" accept = "audio/*" / > ;
有關更詳細的 API 文檔,請查看 Typescript 類型。
建立 Crunker 的新實例。您可以選擇提供帶有sampleRate
鍵的對象,但它將預設採用與內部音訊上下文相同的取樣率,這適合您的裝置。
取得一個或多個音訊檔案。
返回:按獲取順序排列的音訊緩衝區數組。
合併兩個或多個音訊緩衝區。
傳回:單一AudioBuffer
物件。
依指定的順序連接兩個或多個音訊緩衝區。
傳回:單一AudioBuffer
物件。
在音訊的開始、結束或任何指定點以靜音填滿音訊。
傳回:單一AudioBuffer
物件。
將音訊切片到指定範圍,刪除範圍之外的任何內容。可以選擇在開始時添加淡入,在結束時添加淡出,以避免聽到咔嗒聲。
0
。0
。傳回:單一AudioBuffer
物件。
使用 MIME 類型選項匯出音訊緩衝區。
類型:例如'audio/mp3', 'audio/wav', 'audio/ogg'
。重要提示:MIME 類型不會變更實際的檔案格式。它的本質始終是一個WAVE
檔。
傳回:一個包含 blob 物件、url 和音訊元素物件的物件。
自動下載具有可選檔案名稱的匯出音訊 blob。
檔案名稱:不包含 .mp3、.wav 或 .ogg 檔案副檔名的字串。
傳回:用於模擬自動下載的HTMLAnchorElement
元素。
開始在背景播放匯出的音訊緩衝區。
傳回: HTMLAudioElement
。
如果使用者瀏覽器不支援 Web Audio API,則執行自訂程式碼。
返回:回調函數。
有關更詳細的 API 文檔,請查看 Typescript 類型。
存取給定 Crunker 內部使用的 AudioContext。
回傳: AudioContext。
麻省理工學院