javascript - 如何在 cordova 移动设备上本地加载 base64 音频?

标签 javascript cordova audio mobile base64

我一直在尝试加载已经用 base64 编码的音频文件,但无济于事。我可以很容易地加载编码图像,但我不能加载音频。我在 cordova 音频中找到的例子是将 url 链接传递到 Assets 文件夹,但我试过了,但没有成功。

有没有办法直接播放base64编码的音频文件?

最佳答案

我试过 cordova-plugin-media 但它似乎只适用于文件而不适用于 base64 代码。

最后我找到了这个解决方案:

解决方案 1:

var src = "data:audio/mp3;base64," + your_base64_code;
document.write("<audio preload='auto' autoplay><source src='" + src + "' /></audio>");

解决方案 2:

1) 将base64编码转换为音频文件,保存在缓存文件夹中。 你可以阅读这篇文章来做到这一点:How to create an audio file from a mp3 base64 string on the device with Cordova

您可以用作目标文件夹:cordova.file.cacheDirectory

例如:

saveBase64AsAudioFile(cordova.file.cacheDirectory, "audiofile.mp3", your_base64_code, "audio/mp3");

2) 使用cordova-plugin-media 播放创建的文件:

setTimeout(function () {
   var src = cordova.file.cacheDirectory + "audiofile.mp3";
   var media = new Media(src);
   media.play();
}, 2000);
  • 使用 setTimeout 确保文件已经创建。

关于javascript - 如何在 cordova 移动设备上本地加载 base64 音频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35245493/

相关文章:

node.js - 从 javascript 钩子(Hook)获取 cordova 包名称

python - 使用 sox 在 Django 表单类中修剪声音文件

ios - 如何将采样率 16000 的 wav 转换为 mp3?

javascript - 在 jQuery 效果之前确定元素包装器的最终大小(例如 SlideDown)

javascript - 除了对每个元素进行函数调用之外,是否有更通用的方法在 HTML 元素上调用 JS 函数?

javascript - PhoneGap - 无法写入 Android 文件

haskell - 在 Haskell 中播放声音样本的最简单方法是什么?

php - 我想使用单个变量将多条数据发送到数据库(使用 JS、PHP 和 AJAX)

javascript - 是否可以在一个 react ​​组件中有两种状态

php - 使用 PHP/JavaScript 从服务器向用户推送通知