在客户端将多个音频文件合并为一个音频文件
Joining multiple audio files into a single audio file in client side
我们正在使用 ionic 框架构建一个练习应用程序,它需要按顺序播放多个音频文件,每个音频文件之间有特定的间隔。我们得到了这个工作。现在我们需要将音频文件合并为一个文件。
示例:File_1(长度为 4 分钟),File_2(长度为 3 分钟)。我们需要一个新的组合单一音频文件,长度应为 10 分钟 (File_1 + 3 分钟静音 + File_2)
有没有办法使用 angular 或 cordova 在客户端移动应用程序中获取此信息?
客户端javascript不能这样做,但在服务器端可以。
基本技术步骤:
- 将这些文件发送到服务器
- 服务器做任何你想做的事并将结果发回
如果您使用的是 node.js 就很简单了
- 使用multer
发送文件到服务器
- 使用 node-stream 在服务器端修改文件并发回
此 article 描述了 node.js
上的基本 mp3 文件串联
但是如果你仍然想要客户端。理论上这应该有效。
请注意,这是一种非常骇人听闻的方式,您可能会遇到许多限制(应用程序速度、电池消耗、本地存储限制等)并且您仍然不会拥有单一文件,而是单一格式。
- 使用 btoa,
将文件转换为 base64
并使用像
这样的自定义格式
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音频可以播放它
您可以创建一个 cordova 插件来管理 javascript 层中的文件连接,但实际上将它们加入本机层。
关于音频合并的其他有趣问题(仅在 Android 中):
Android concat 2 audio (wav or mp3) files
How to merge two mp3 files into one (combine/join)
Concatenate two audio files and play resulting file
我们正在使用 ionic 框架构建一个练习应用程序,它需要按顺序播放多个音频文件,每个音频文件之间有特定的间隔。我们得到了这个工作。现在我们需要将音频文件合并为一个文件。
示例:File_1(长度为 4 分钟),File_2(长度为 3 分钟)。我们需要一个新的组合单一音频文件,长度应为 10 分钟 (File_1 + 3 分钟静音 + File_2)
有没有办法使用 angular 或 cordova 在客户端移动应用程序中获取此信息?
客户端javascript不能这样做,但在服务器端可以。
基本技术步骤:
- 将这些文件发送到服务器
- 服务器做任何你想做的事并将结果发回
如果您使用的是 node.js 就很简单了
- 使用multer 发送文件到服务器
- 使用 node-stream 在服务器端修改文件并发回
此 article 描述了 node.js
但是如果你仍然想要客户端。理论上这应该有效。
请注意,这是一种非常骇人听闻的方式,您可能会遇到许多限制(应用程序速度、电池消耗、本地存储限制等)并且您仍然不会拥有单一文件,而是单一格式。
- 使用 btoa,
并使用像
这样的自定义格式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音频可以播放它
您可以创建一个 cordova 插件来管理 javascript 层中的文件连接,但实际上将它们加入本机层。
关于音频合并的其他有趣问题(仅在 Android 中):
Android concat 2 audio (wav or mp3) files
How to merge two mp3 files into one (combine/join)
Concatenate two audio files and play resulting file