我有一个mp3
文件可在我的视图中播放。我已经知道服务器中该mp3
文件的位置,音频元素工作正常,我可以播放此mp3
。但我需要从该音频元素中获取Blob数据。我在网络上发现了很多示例,但是每个人都只有在我们从<input>
元素上传文件时才教。
我只需要学习如何从现有的audio
元素中获取二进制数据,如下所示:
<audio id="myAudio" src="/Media/UserData/mp3DataFolder/5f67889a-0860-4a33-b91b-9448b614298d.mp3"></audio>
从现在开始。
答案 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。