【问题标题】:Parsing the .mp3 file to get the song's information in Titanium解析 .mp3 文件以获取 Titanium 中的歌曲信息
【发布时间】:2015-12-29 10:21:33
【问题描述】:

伙计们!最近,我很难解析 .mp3 文件(或其他类型)以获取歌曲的信息(例如:专辑名称专辑封面歌曲名称歌手、歌曲的持续时间和大小等)在Titanium中!因为我在 API 中找不到解决问题的好方法(我尝试过 Titanium Media,但没有帮助),所以我尝试了这个节点模块 musicmetadata。然而,在 Titanium 中应用节点模块存在一些问题,虽然,here 是一个很好的建议,但对我没有帮助。

这是安装musicmetadata后的文件树:

根据musicmetadata API,我必须在我的js文件(Resources/ui/index.js)中声明以下代码:

var fs = require('fs');
var mm = require('musicmetadata');

不过,据我所知,Titanium 中的 require 方法只覆盖了 Resources 目录下的范围。这是我的 js 文件目录:

所以,出现了找不到模块的错误。也许有一种不好的方法,只复制 Resources/lib 路径下的模块可能会有所帮助,但这并不聪明。真正的问题是 fs 模块(这是我无法理解的,我想它可能指向音乐元数据中包含的 filereader-stream 节点模块)。如何在我的 js 文件中正确地要求音乐元数据模块?或者,有没有一种很好的方法来解析 Titanium API 中的 mp3 文件?伙计们,我需要你们的帮助!提前致谢,非常感谢您的建议或想法!

【问题讨论】:

  • 不要认为尝试导入 node.js 模块是这里的方法......虽然它可能适用于一些非常简单的模块,这些模块不依赖于核心节点模块或其他库,我不要认为这适用于绝大多数情况,当然也不适用于“fs”。
  • 谢谢@Cviejo!我真的不打算将节点模块应用到我的项目中,因为正如您所说,修复节点模块的这些 依赖项 确实是一个大问题,只是就像 "fs" 我别无选择让它工作。现在,我正在尝试找到一种用原生 javascript 方法解析 mp3 文件的好方法,或者,如果我足够幸运,会有一个捷径,有人可以在 Titanium API中告诉我>.

标签: node.js titanium media


【解决方案1】:

您不能在 Titanium 应用程序中使用 NPM 包。只有Resources 将与您的应用程序一起打包,即使您将node_modules 文件夹放在那里,Titanium 的require() 也无法正确解决它。然后是 Titanium 使用的 JavaScriptCore 引擎不支持像 fs 这样的 NodeJS API 的问题。您应该做的是使用https://github.com/smclab/titaniumifiermusicmetadata 转换为您可以在Titanium 中需要的单个CommonJS 文件。它填充 fs 和其他一些核心 NodeJS API,并将所有 musicmetadata JS 文件及其依赖项合并到一个文件中。

【讨论】:

  • 好吧,谢谢@Fokke Zandbergen!非常感谢您在我上一个关于从模拟器获取本地文件的问题中为我提供了suggestion,幸运的是,我已经解决了。你检查过吗?我也感谢你在这里给我的建议。是的,你说的很对,将 node-module 应用到 Titanium 应用程序项目中确实很麻烦,并且 @Cviejo 已经提醒我了。而现在,我已经放弃了这种方式。还是谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-10-09
  • 2020-12-28
  • 1970-01-01
  • 2011-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-30
相关资源
最近更新 更多