【发布时间】:2021-01-24 14:23:52
【问题描述】:
我正在尝试解决一个问题,即我必须在网站上上传的音频文件中找到一个文本。该文本仅作为纯文本隐藏在音频文件的二进制代码中。只有当音频可以播放时,我才必须使用 JavaScript。
虽然音频播放器工作正常,但我无法“进入”音频文件二进制数据。
到目前为止,我所做的是,
function playMusic() {
if (!isPaused) {
player.src = URL.createObjectURL(songs[currentSong]);
fetch(player.src).then(function (response) {
var fileAsBlob = response.blob();
console.log(fileAsBlob);
});
我得到的输出是:
Promise {<pending>}
__proto__: Promise
[[PromiseState]]: "fulfilled"
[[PromiseResult]]: Blob
size: 6423486
type: "audio/mpeg"
__proto__: Blob
arrayBuffer: ƒ arrayBuffer()
size: (...)
slice: ƒ slice()
stream: ƒ stream()
text: ƒ text()
type: (...)
constructor: ƒ Blob()
Symbol(Symbol.toStringTag): "Blob"
get size: ƒ size()
get type: ƒ type()
__proto__: Object
但我无法从这里继续前进。我没有找到将其转换为字符串或任何可以检查二进制数据是否包含所述文本的格式的方法。
我尝试了文件读取,但它不接受上述变量作为 Blob。所以不能使用 readAsText 或 readAsArrayBuffer。
还尝试将变量创建为 Blob 的实例,但我遇到了 'type : 'audio/*' 的问题,因为它不被接受,而我不确定音频文件的格式。
任何帮助将不胜感激。
【问题讨论】: