将多个音频文件连接到客户端的单个音频文件中

Sab*_*ish 2 html5-audio angularjs cordova ionic-framework ionic

我们正在使用离子框架构建一个练习应用程序,它需要按顺序播放多个音频文件,每个音频文件之间有特定的间隔.我们得到了这个工作.现在我们需要将音频文件加入单个文件中.

示例:File_1(长度为4分钟),File_2(长度为3分钟).我们需要一个新的组合单音频文件,长度应为10分钟(File_1 + 3分钟静音+ File_2)

有没有办法在使用angular或cordova的客户端移动应用程序中获得此功能?

Med*_*uly 6

客户端javascript不能这样做,但它可以在服务器端.


基本技术步骤:

  • 将这些文件发送到服务器
  • 服务器做任何你想做的事情并发回结果

如果你使用node.js,这很容易

  • 使用multer将文件发送到服务器
  • 使用node-stream修改文件服务器端并发回


文章描述了node.js的基本的MP3文件连结

但如果你还想要客户端.从理论上讲,这应该有效.

注意,这是非常hackish的方式,你可能会遇到很多限制(应用程序速度,电池消耗,本地存储限制等),你仍然不会有单个文件,而是单一格式.

并使用自定义格式

var CustomFile = function(array_of_base64_files){
    var prepared_files = [];
    for (var i = 0; i < array_of_base64_files.length; i++) {
        var file = array_of_base64_files[i];
        prepared_files.push({
            created: Date.now(),
            order: i,
            base64: file
        });
    };
    this.export = function(){
        return prepared_files;
    }
};
Run Code Online (Sandbox Code Playgroud)
  • 使用PouchDB将其保存到浏览器,它有一些限制,您可以在文档中阅读
  • 当你想玩它时,CustomFile从pouchdb 回来
  • 将这些base64解码为文件并使用,window.URL.createObjectURL(formBlob);以便HTML5 Audio可以播放它