从 firefox 插件中的本地音频文件解析 id3 数据

Posted

技术标签:

【中文标题】从 firefox 插件中的本地音频文件解析 id3 数据【英文标题】:Parsing id3 data from a local audio file within firefox addon 【发布时间】:2015-01-12 13:36:56 【问题描述】:

我正在使用SDK 开发一个Firefox addon,它使用require("sdk/io/file").list() 列出您计算机上的音频文件。 我使用上述方法构建了一个文件路径数组,并将此数组传递给附加到PanelcontentScript。 然后Panel 循环遍历数组并显示找到的所有文件。

现在我正在尝试使用javascript-ID3-Reader,这样我就可以从每个文件中读取ID3 数据并将这些数据显示在每个文件旁边。 我一直在尝试this(读取本地文件),从contentScript 内部,例如..

var f = new File([""], "file:///home/user/audio.mp3");
ID3.loadTags("audio.mp3", function () 
        var tags = ID3.getAllTags("audio.mp3");
        console.log(tags.comment + " - " + tags.track + ", " + tags.lyrics);
, 
        dataReader: FileAPIReader(f)
); 

但我得到的输出是..

undefined - undefined, undefined

/home/user/audio.mp3 包含以下ID3 数据,与http://web.ist.utl.pt/antonio.afonso/www.aadsm.net/libraries/id3/ 一起找到..

Artist
    A Perfect Circle
Title
    Annihilation
Album
    eMOTIVe
Year
    2004
Comment
Genre
    Pop/Rock
Track
    1/12
Lyrics

这是我正在尝试的另一个测试..

function getID3 (file) 
        var url = file.name;
        console.log(url); // console.log: addon: /home/user/audio.mp3
        ID3.loadTags(url, function () 
                var tags = ID3.getAllTags(url);
                console.log(tags); // console.log: addon: 
                console.log(tags.artist); // console.log: addon: null
        , 
                dataReader: new FileAPIReader(file)
        );


var f = new File([""], "file:///home/rob/audio.mp3", type : "audio/mpeg");
getID3(f);

有人知道这可能有什么问题吗? /home/user/audio.mp3 确实存在于文件系统中。

【问题讨论】:

【参考方案1】:

此 JavaScript-ID3-Reader 库旨在在网站上下文中运行,仅适用于通过 httphttps afaict 获得的文件。

您可能想找到一个可以在附加组件方面工作的库。

【讨论】:

contentScripts 附加到Panels 不在网站上下文中运行?由于我在创建Panel 期间附加了库,因此我认为它可以访问本地文件,类似于contentURL<audio> src 上的Panel 可以访问本地文件。 contentScripts 在沙箱中运行,具有与网站本身几乎相同的权限(使用扩展主体)。它与常规的 <script> 导入几乎相同,但由于 xray 包装器的存在,它并不完全相同。一些脚本在这些条件下会中断。如果不会造成任何安全问题,您应该使用不同的脚本或尝试将其注入页面内容本身。【参考方案2】:

您确定您的 audio.mp3 文件定义了这些 ID3 标签吗?尝试使用 console.log(tags) 列出您的 ID3 标签以查看所有标签,并尝试使用桌面媒体播放器打开它以查看信息是否显示。请注意,ID3 有几个不同的版本,因此您也可能使用了错误的版本。

【讨论】:

有一些数据,我运行了 lib 提供的测试,here,用于检查ID3 标签,结果为"Track": "1/12", "Comment":"", "Lyrics": ""。所以使用console.log(tags) 应该打印一些东西而不是,对吧?

以上是关于从 firefox 插件中的本地音频文件解析 id3 数据的主要内容,如果未能解决你的问题,请参考以下文章

在 docker 容器中录制本地音频

支持vue3.0 中的音频插件都有哪些?

firefox本地安装firebug插件

解决ubuntu下的firefox无法在线播放音频和视频的问题

HTML 音频(Audio)

Firefox 插件来查看/编辑/创建本地存储数据? [关闭]