【发布时间】:2018-01-17 09:31:11
【问题描述】:
我正在使用 Ionic,并且想将音频录制到文件中,然后对文件执行一些操作。
运行于:Galaxy S4
首先,我创建文件:
await this.file.createFile(this.getFileDirectory(), this.getFileName(), true);
当它准备好后,我创建一个新的Media 实例:
this.currentRecording = this.media.create(this.getFilePath());
附加一个成功和错误监听器:
this.currentRecording.onSuccess.subscribe((e) => {
console.log(this.currentRecording.getDuration());
this.file.readAsArrayBuffer(this.getFileDirectory(), this.getFileName())
.then(file => console.warn(file))
});
this.currentRecording.onError.subscribe((err) => console.error(err));
然后我开始录制:
this.currentRecording.startRecord();
几秒钟后,我停止录制,this.currentRecording.stopRecord(),并执行成功回调。
在控制台中,我现在看到了
-1 // console.log(this.currentRecording.getDuration());
ArrayBuffer {} // console.warn(file);
我做错了吗?怎么解决成功了,却没有文件,也没有持续时间?
编辑
复制仓库:https://github.com/AmitMY/ionic-media-record-repro
README 有完整的说明
【问题讨论】:
-
1) 你在用这个插件吗? ionicframework.com/docs/native/media 2) 您是否在移动设备上试用您的代码?
-
正确,就是插件。我在 Android 设备上运行
-
你能把TS组件的完整代码放上来吗?有
this.getFileName()之类的一些方法我不是很明白目的 -
@saperlipopette 添加了完整的页面源代码,以及指向要点的链接。这些方法的目的是因为 2 个插件(文件和媒体)以不同的方式获取文件路径,所以我必须确保它们获取相同的文件。
getFileDirectory方法确保它为 iOS 和 Android 使用正确的目录。 -
你能提供更多关于你的测试环境的细节吗?你能创建一个 git 存储库,为你重现它,我们可以玩吗?
标签: ionic-framework ionic2 cordova-media-plugin