如何将音频base64字符串作为mp3文件下载而不会破坏它?

时间:2017-10-27 19:22:27

标签: javascript audio download base64 mp3

我有一个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;
&#13;
&#13;

上面代码段中的base64字符串无效,因为在问题中不允许超过30,000个字符限制。因此,我不得不削减它。原始字符串有效且播放正常,但由于字符限制,无法在此处发布。

我想要的是从一个类型为&#39; audio / mp3&#39;的base64编码字符串下载准确的mp3文件。

如何使用普通的javascript / ES6执行此操作?非常感谢见解。

1 个答案:

答案 0 :(得分:1)

audio/mp3; codecs=opus;

没有这样的事情。 Opus是一个音频编解码器。 MP3是一种音频编解码器。 “MP3文件”只是一个原始的MPEG流。你不能把Opus放在原始的MPEG流中。

浏览器可能对您很好,并且可以解释您实际拥有的任何数据,无论它实际应该是什么。其他球员,可能不是那么多。