我有一个10秒的音频流,编码为base64字符串。当附加到音频标签时,它在HTML元素内正常播放。在尝试下载时,它会下载为(损坏的?)文件,持续时间为0:00。
var audio = document.getElementById('audio-element');
var linkTag = document.getElementById('link-element');
linkTag.href = audio.src;
linkTag.download = 'audio-file';
linkTag.click();

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<audio src="data:audio/mp3; codecs=opus;base64,GkXfo59ChoEBQveBAULy.............IiT5Q==" controls id="audio-element">
Your browser does not support the audio element
</audio>
<a href="" id="link-element">Download audio</a>
</body>
</html>
&#13;
上面代码段中的base64字符串无效,因为在问题中不允许超过30,000个字符限制。因此,我不得不削减它。原始字符串有效且播放正常,但由于字符限制,无法在此处发布。
我想要的是从一个类型为&#39; audio / mp3&#39;的base64编码字符串下载准确的mp3文件。
如何使用普通的javascript / ES6执行此操作?非常感谢见解。
答案 0 :(得分:1)
audio/mp3; codecs=opus;
没有这样的事情。 Opus是一个音频编解码器。 MP3是一种音频编解码器。 “MP3文件”只是一个原始的MPEG流。你不能把Opus放在原始的MPEG流中。
浏览器可能对您很好,并且可以解释您实际拥有的任何数据,无论它实际应该是什么。其他球员,可能不是那么多。