目前,我正试图使用插件SDK为Mozilla编写一个音乐播放器插件。我使用Aurora.js (维基)来处理音频文件的加载/解码/解码
我现在已经有了加载项,这样您就可以选择一个带有HTML文件输入的音频文件,这是非常直接的。
<input type="file" id="file-selector" />
<script>
var fileSelector = document.getElementById("file-selector");
fileSelector.onchange = function() {
var audioFile = fileSelector.files[0];
var audioPlayer = AV.Player.fromFile(audioFile);
audioPlayer.play();
};
</script>不过,我目前要做的是读取从and返回的文件,而不是从HTML页面的输入中读取文件,并创建一个AV.Player。使用sdk/io/file和sdk/io/byte-streams模块读取文件非常简单。
问题是,我不知道如何正确地从这些数据构建AV.Player。从看上去:
AV.Player.fromFile(x)通过从AV.Asset.fromFile(x)构造AV.Asset来工作AV.Asset.fromFile(x)用AV.FileSource(x)构造AV.AssetAV.FileSource是通过创建一个FileReader并以Blob的形式从文件中读取数据来构造的。我一直试图找出如何用io/file.read(filePath,"br")返回的字节数组创建一个Blob,但没有结果。我尝试创建一个类似Blob的对象,具有大小、类型和切片方法,但这似乎也不起作用。
发布于 2013-09-18 14:41:40
由于您将在某些内容脚本(小部件、面板、.)中使用Aurora (或者至少应该使用Aurora),所以事情会更复杂一些。
main.js中的数据,例如通过您已经提到的file模块。Uint8Array中,然后执行极光操作:
Addon.port.on(“字节加载”,函数(流){ var data =新Uint8Array(stream.length);for (var i= 0;i< stream.length;++i) { datai = String.charCodeAt(streami) &0 0xff;} avPlayer = AV.Player.fromBuffer(data);});file模块不是很好,因为它是一个同步API,在读取文件时会阻塞,但是至少有另一种选择。
NetUtil异步文件读取的完整示例可以在这个建筑商中找到,而无需将字符串转换为Javascript中的数组,但请确保替换硬编码路径。;)
https://stackoverflow.com/questions/18873031
复制相似问题