如何将ArrayBuffer转换为mp3音频?

8
使用JavaScript的AudioContext可以实现音频混合,为了导出音频混合,我使用了OfflineAudioContext和lame js来编码解码后的音频。现在导出功能已经正常工作,但速度非常慢,我正在寻找更快的高效方法来完成导出。

2
目前没有更好的跨浏览器方法来做到这一点。您可以考虑使用OGG代替(Firefox可以本地记录OGG,但在Chrome中您需要一个JS OGG编码器)。最快的编码MP3的方式是使用PNACLNACLPorts Lame,但这仅限于Chrome且比较棘手! - CodingIntrigue
我自己没有测试过,但根据LameJS项目的说法,它应该比实时快20倍。从代码上看,它似乎利用了JavaScript的Float32Array。我建议您检查一下您的浏览器是否支持这项技术,以及是否支持基于GPU的矩阵乘法的WebGL(它可能支持)。如果不支持,我会尝试使用支持该技术的浏览器,并检查速度。 - Itai Bar-Haim
你可以考虑使用emscripten并编译lame编码器源代码。不知道这对你来说会有什么效果,而且可能比你想象的更加困难。 - Goblinlord
@Goblinlord 我尝试使用糟糕的js处理数组缓冲区,感谢您的帮助。 - Niyaz
2个回答

0

请查看此[线程][1]

  document.querySelector('input').onchange = function(){
      var fileReader  = new FileReader;
      fileReader.onload = function(){
         var arrayBuffer = this.result;
         snippet.log(arrayBuffer);
         snippet.log(arrayBuffer.byteLength);
         }
      fileReader.readAsArrayBuffer(this.files[0]);

      var url = URL.createObjectURL(this.files[0]); 
      audio_player.src = url; 
      audio_player.play();
    };
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
<input id="audio_file" type="file" accept="audio/*" />
<audio id="audio_player" />


你的回答如何帮助解决这个问题? - v1shnu

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接