【发布时间】:2018-07-20 14:19:48
【问题描述】:
我试图在录制 2500 毫秒后生成一个音频文件(.mp3 格式)。我正在使用navigator,主要使用 HTML5 音频。我正在生成一个下载文件的链接。
window.URL.createObjectURL(stream) 返回blob:http://localhost:4200/e6a5a51e-ae11-4b77-9b2c-06251b13ca39。我不知道如何把它变成一个可以下载的文件。
录音功能是这样的:
this.record = () => {
var headers = new Headers();
var browser = <any>navigator;
var obj = {
audio: true,
sampleSize: 16
};
var audio = document.createElement('audio');
browser.getUserMedia = (browser.getUserMedia || browser.webkitGetUserMedia || browser.mozGetUserMedia || browser.msGetUserMedia);
browser.mediaDevices.getUserMedia(obj).then(stream => {
setTimeout(function(){
var track = stream.getTracks()[0];
var source = window.URL.createObjectURL(stream); // returns blob:http://localhost:4200/e6a5a51e-ae11-4b77-9b2c-06251b13ca39
audio.src = source;
audio.autoplay= true;
var link = document.createElement("a");
link.href = source;
link.download = 'audio_recording_' + new Date().getTime() + '.mp3'; //"audioSample.wav";
link.innerHTML = "Click here to download the file";
document.body.appendChild(link);
track.stop();
// window.URL.revokeObjectURL(stream);
}, 2500);
});
};
任何帮助将不胜感激。谢谢!
【问题讨论】:
-
看来您已经完成了。只是不要假设该文件将是 MP3。您遇到的具体问题是什么?
标签: typescript audio blob html5-audio angular6