使用 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。
麻省理工学院