Ionic 3 从录制的文件中获取 base64 音频字符串

Posted

技术标签:

【中文标题】Ionic 3 从录制的文件中获取 base64 音频字符串【英文标题】:Ionic 3 get base64 audio string from recorded file 【发布时间】:2018-08-04 15:09:13 【问题描述】:

我正在使用cordova-plugin-media 在我的 android 离子应用程序中录制语音(具有暂停和恢复功能)。录制完成后,我需要获取 base64 字符串才能使用 html 音频标签播放它。问题是:如果我试图将暂停和恢复的录音保存为 3gp 文件('voice.3gp'),那么当我使用cordova-plugin-file 的 readAsDataURL 方法时,我什么也没有收到(回调根本没有称为)。如果我试图将其保存为 mp3 或 wav 文件,那么我只会收到录音的第一部分(暂停前)。我想正确的音频文件扩展名应该是 3gp,因为这个扩展名用于“cordova-plugin-media”的实现,但是我在使用 html 音频标签播放这个文件时遇到了问题。任何帮助都会得到帮助

【问题讨论】:

【参考方案1】:

好的,我刚刚发现您可以使用cordova-plugin-file的方法“resolveLocalFilesystemUrl”,它将返回对象,并且在该对象内部有一个属性“nativeURL”可以用作源(src ) 用于视频标签(必须使用视频标签而不是音频,因为 3gp 格式实际上是用于视频的)

【讨论】:

【参考方案2】:
this.file.readAsDataURL(filePathtoUpload, this.fileName)
.then((base64Audio) => 
console.log(base64Audio);
)
.catch(function (err: TypeError) 
console.log("readAsDataURL: " + err);
);

这对我有用

【讨论】:

您可以考虑在代码中添加一些 cmets 和解释性句子,因为这会增加您的答案对其他用户的价值。 以上代码用于将录制的文件转换为base64文件【参考方案3】:

阅读:https://ionicframework.com/docs/v3/native/base64/

是ionic的官方网站API。只需安装该插件并使用它:

 this.base64.encodeFile(this.filePath + this.fileName).then(
      (base64:any) =>
      console.log('file base64 encoding: ' + base64);
    );

在这篇文章中,我会更好地解释它。我把链接放在这里: convert audio file to base64 in ionic 3

【讨论】:

以上是关于Ionic 3 从录制的文件中获取 base64 音频字符串的主要内容,如果未能解决你的问题,请参考以下文章

从输入表单中获取 Base64 编码文件数据

从 PEM BASE64 编码的私钥文件中获取 RSA 私钥

Cordova/Ionic 应用程序通过服务器签名的 url 将 base64 图像上传到 S3

从本地 Json 文件 ionic 3 获取数据 [重复]

如何从 base 64 编码字符串中获取十六进制块?

Ionic 2 Angular 2 HTTP Post Base64 Image to Server 导致在发送前清理不安全的 URL