将多个音频文件合并到客户端

时间:2015-08-17 05:21:01

标签: angularjs cordova ionic-framework ionic html5-audio

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

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

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

2 个答案:

答案 0 :(得分:6)

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


基本技术步骤:

  • 将这些文件发送到服务器
  • 服务器执行您想要的任何操作并将结果发回

如果您使用的是node.js,那很容易

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


这个article描述了node.js上的基本mp3文件串联

但如果你还想要客户端。理论上这应该有效。

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

并使用自定义格式,如

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;
    }
};
  • 使用PouchDB将其保存到浏览器,它有一些限制,您可以在文档中阅读
  • 如果您想播放它,请从pouchdb
  • 返回CustomFile
  • 将这些base64解码为文件并使用window.URL.createObjectURL(formBlob);以便HTML5音频可以播放

答案 1 :(得分:3)

您可以创建一个cordova插件来管理javascript图层中的concat文件,但是真正将它们连接到本机层。

关于音频合并的其他有趣问题(仅限Android):