如何使用Javascript

时间:2018-10-22 09:18:14

标签: javascript audio binary blob

我有一个mp3文件可在我的视图中播放。我已经知道服务器中该mp3文件的位置,音频元素工作正常,我可以播放此mp3。但我需要从该音频元素中获取Blob数据。我在网络上发现了很多示例,但是每个人都只有在我们从<input>元素上传文件时才教。

我只需要学习如何从现有的audio元素中获取二进制数据,如下所示:

<audio id="myAudio" src="/Media/UserData/mp3DataFolder/5f67889a-0860-4a33-b91b-9448b614298d.mp3"></audio>

从现在开始。

2 个答案:

答案 0 :(得分:1)

您可以简单地获取此URL并将您的请求的responseType设置为Invoice

const versionSchema = new mongoose.Schema({
  name: String,
  images: [{ type: Schema.Types.ObjectId, ref: 'Resource' }]
}, { timestamps: true })
const Version = mongoose.model('version', versionSchema)
const versions = await Version.find()
for(let version of versions) {
  const ids = version.images
  await Resource.remove({_id: {$in: ids }})
  await version.delete()
}

或使用提取API:

"blob"
var aud = document.getElementById('aud');
var xhr = new XMLHttpRequest();
xhr.open('GET', aud.src);
xhr.responseType = 'blob';
xhr.onload = e => console.log(xhr.response);
xhr.send();

当然,这是假设保存音频文件的服务器允许您从客户端获取它的(由于您显示了相对URL,因此在您的情况下应该如此)。

答案 1 :(得分:0)

嗨,您可以先将其转换为64位,然后再blob:

键方法:

var bufferToBase64 = function (buffer) {
    var bytes = new Uint8Array(buffer);
    var len = buffer.byteLength;
    var binary = "";
    for (var i = 0; i < len; i++) {
        binary += String.fromCharCode(bytes[i]);
    }
    return window.btoa(binary);
};

[https://codepen.io/xewl/pen/NjyRJx]

然后按照此答案创建Blob。

Javascript make audio blob

演示:https://jsfiddle.net/sanddune/uubnnr0w/