【问题标题】:Ionic cordova media record user audio does not work离子科尔多瓦媒体记录用户音频不起作用
【发布时间】: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


【解决方案1】:

@Amit,我已经克隆了你的仓库并得到了和你一样的结果。我摆弄了一段时间,媒体插件肯定有一些奇怪的事情发生。我会尝试花一些时间发送一些拉取请求以添加一些功能并修复一些不良行为,就像使用 getDuration() 一样。

原来 getDuration() 函数不会询问插件的原生部分持续时间是多少,它会返回保存在 javascript 中的值,并且只有在原生时才会更新此值代码发送消息。 因此您不会获得最新的当前持续时间值。 您可以更改插件,让它使用 cordova exec() 获取本机代码中的持续时间。

关于文件,我开始使用文件插件,但最终把它扔掉了。 仅使用媒体插件尝试,仅传递文件名,不传递路径。该文件存储在 /storage/emulated/0/file.3gp 中。 它被记录下来,有内容,并且可以播放。我的猜测是,使用文件插件并传递完整的路径字符串将让它在你想要的位置创建文件。但是,当您将相同的路径传递给媒体插件时,它不尊重这一点,因为当我使用它时,文件已分配但在录制后它有 0 个字节,但我仍然可以播放录音,所以它必须存储在某个地方否则。

如果单独使用媒体插件可以像对我一样解决您的问题,那太好了!如果没有,并且您仍然想继续进行此工作,我建议您在 Android Studio 中使用 android monitor 来监控本机消息并查看插件的代码。我就是这样得知这些事情的。

希望对你有帮助

【讨论】:

  • 谢谢!我转而使用cordova-plugin-audioinput,这似乎效果很好。
猜你喜欢
  • 1970-01-01
  • 2016-12-06
  • 2018-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-10
  • 1970-01-01
  • 2017-07-13
相关资源
最近更新 更多