gpt4 book ai didi

audio - 使用Lame将原始音频转换为mp3

转载 作者:行者123 更新时间:2023-12-03 02:35:41 26 4
gpt4 key购买 nike

我将文件以Float32Array的形式上传到Fire Storage中,但要播放该文件,必须先将其转换为将其存储到Firebase到mp3,wav或ogg之前,或者在获得下载网址之后。
我使用Lame选择了1选项。

let mp3Encoder = new lamejs.Mp3Encoder(1, 44100, 128);
let in16Array = Int16Array.from(audioData); //audioData is a Float32Array containing the recorded audio buffer
var mp3Tmp = mp3Encoder.encodeBuffer(in16Array); //encode mp3

//Push encode buffer to mp3Data variable
this.mp3Data.push(mp3Tmp);

//Get end part of mp3
//mp3Tmp = mp3Encoder.flush();

//Write last data to the output data, mp3Data contains now the complete mp3Data
this.mp3Data.push(mp3Tmp);

const blob = new Blob([this.mp3Data], { type: 'audio/mp3' });

但是,在Firebase中,它不会作为mp3上传
const id = this.i + Math.random().toString(36).substring(2) + ".mp3" ;
this.ref = this.afStorage.ref(id);
this.task = this.ref.put(blob); //code for uploading

有什么建议我下一步应该尝试什么?

最佳答案

您可以使用简单的音频服务:

import { Injectable } from '@angular/core';
@Injectable()
export class AudioService {
map = new Map();
constructor() { }
preload(src: string): HTMLAudioElement {
if (this.map.has(src)) {
return this.map.get(src);
}
const audio = new Audio();
audio.src = src;
audio.load();
this.map.set(src, audio);
return audio;
}
play(src: string) {
return this.preload(src).play();
}
pause(src: string) {
return this.preload(src).pause();
}
}

然后,您只需要预加载并设置音量
this.audio = this.audioService.preload('assets/audio.mp3');
this.audio.volume = this.isMuted ? 1 : 0;

而且要快乐!玩:
this.audio.play();

关于audio - 使用Lame将原始音频转换为mp3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51836498/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com