如何把mp3文件转成blob
时间: 2023-09-21 07:08:43 浏览: 43
要将MP3文件转换为Blob对象,你可以使用`fetch` API并将`responseType`设置为`blob`。以下是一个示例代码:
```javascript
fetch('your_mp3_file_url')
.then(response => response.blob())
.then(blob => {
// 处理Blob对象
// ...
})
.catch(error => {
console.error(error);
});
```
在上面的代码中,我们使用`fetch`来发送GET请求到MP3文件的URL,并将`responseType`设置为`blob`。在第二个`.then`回调函数中,我们可以处理返回的Blob对象。
请记住将`your_mp3_file_url`替换为实际的MP3文件URL。
一旦转换为Blob对象,你就可以对其进行进一步处理,例如将其传递给HTML5的Audio标签进行播放,或者通过URL.createObjectURL方法创建一个可用于播放的URL。
相关问题
用js将Blob音频对象转为.MP3文件
要将Blob音频对象转为.MP3文件,需要使用第三方库如lamejs或libmp3lame.js。下面是使用lamejs的示例代码:
```javascript
// 将Blob音频对象转为ArrayBuffer
let reader = new FileReader();
reader.onload = function() {
let arrayBuffer = this.result;
// 转换为MP3格式
let mp3encoder = new lamejs.Mp3Encoder(1, 44100, 128);
let samples = new Int16Array(arrayBuffer);
let mp3 = mp3encoder.encodeBuffer(samples);
mp3 = mp3encoder.flush();
// 将MP3数据转为Blob对象
let blob = new Blob([new Uint8Array(mp3)], {type: 'audio/mp3'});
// 下载文件
let url = URL.createObjectURL(blob);
let link = document.createElement('a');
link.href = url;
link.download = 'audio.mp3';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
};
reader.readAsArrayBuffer(blob);
```
在上面的代码中,先将Blob音频对象转为ArrayBuffer,然后使用lamejs库将其转为MP3格式的数据。最后将MP3数据转为Blob对象,下载文件。
用js写一个方法,传一个Blob音频对象返回.MP3文件
要将 Blob 音频对象转换为 MP3 文件,需要使用第三方库。这里以 lamejs 为例,提供以下代码示例:
```javascript
function blobToMp3(blob) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsArrayBuffer(blob);
reader.onloadend = () => {
const data = new Int16Array(reader.result);
const buffer = [];
for (let i = 0; i < data.length; i++) {
buffer.push(data[i]);
}
const mp3encoder = new lamejs.Mp3Encoder(1, 44100, 128);
const mp3Data = mp3encoder.encodeBuffer(buffer);
const mp3Blob = new Blob([new Uint8Array(mp3Data)], { type: 'audio/mp3' });
resolve(mp3Blob);
};
reader.onerror = reject;
});
}
```
这个方法接受一个 Blob 对象,返回一个 Promise 对象,Promise 对象解析出的值是转换后的 MP3 文件的 Blob 对象。调用方法如下:
```javascript
const mp3Blob = await blobToMp3(audioBlob);
```
其中 `audioBlob` 是传入的 Blob 对象。注意,这个方法中的 `lamejs` 库需要先引入,可以通过以下代码进行引入:
```html
<script src="https://cdn.jsdelivr.net/npm/lamejs@1.2.4/"></script>
```