【问题标题】:is mp4parser java library has android versionmp4parser java库有android版本吗
【发布时间】:2016-05-18 17:33:21
【问题描述】:

我正在尝试在 android 中使用 mp4parser 库,但遇到了一些困难。 我猜这是因为 mp4parser 是一个基于 java 的项目,还没有适应 android。

PS - mp4parser 在世界范围内传播,甚至被 Instagram 使用

我的结论基于以下代码:

 public PropertyBoxParserImpl(String... customProperties) {
    InputStream is = getClass().getResourceAsStream("/assets/isoparser-default.properties");
    mapping = new Properties();
    try {
        mapping.load(is);
        Enumeration<URL> enumeration = Thread.currentThread().getContextClassLoader().getResources("isoparser-custom.properties");

        while (enumeration.hasMoreElements()) {
            URL url = enumeration.nextElement();
            mapping.load(url.openStream());
        }
        for (String customProperty : customProperties) {
            mapping.load(getClass().getResourceAsStream(customProperty));
        }
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}

isoparser-default.properties 是一个反射映射:

hint=com.coremedia.iso.boxes.TrackReferenceTypeBox(type)
cdsc=com.coremedia.iso.boxes.TrackReferenceTypeBox(type)
meta-ilst=com.coremedia.iso.boxes.apple.AppleItemListBox()
-----name=com.coremedia.iso.boxes.apple.AppleNameBox()
-----mean=com.coremedia.iso.boxes.apple.AppleMeanBox()
-----data=com.coremedia.iso.boxes.apple.AppleDataBox()
rmra=com.coremedia.iso.boxes.apple.AppleReferenceMovieBox()
rmda=com.coremedia.iso.boxes.apple.AppleReferenceMovieDescriptorBox()
rmdr=com.coremedia.iso.boxes.apple.AppleDataRateBox()
rdrf=com.coremedia.iso.boxes.apple.AppleDataReferenceBox()

在 android 中,您不能使用指向本地类和方法的链接来启动 url 并像加载它一样 上面的 PropertyBoxParserImpl() 可以。

所以我猜我只需要更改以下函数,是否有人在使用 mp4parser 时遇到过这些问题?

【问题讨论】:

  • 你修改了吗? Mp4 解析器确实使用 isoviewer-1.0-RC-35.jar 在 android 上工作,但如果使用这个库,我不能使用 Proguard,因为它检测到对 awt 类的引用存在问题。
  • PSIXO 我设法使用它,但从不尝试保护它。对 awt 类的引用是强制性的吗?也许您应该尝试将它们更改为 Android 库
  • 感谢您的建议。我确实有类似的想法(删除 awt 类),但后来遇到了问题,因为许多库部分都基于反射 API。由于以这种方式完成了大量映射,因此删除它对我来说似乎太复杂了。另一方面,这解决了问题,Proguard 现在运行 -keep public class * implements com.coremedia.iso.boxes.Box

标签: android mp4parser


【解决方案1】:

是的,你可以。下载 isoparser-1.0-RC-27.jar 和 aspectj-rt.jar,并将它们包含在您的 libs 文件夹中。

http://repo1.maven.org/maven2/org/aspectj/aspectjrt/1.7.3/

http://repo1.maven.org/maven2/com/googlecode/mp4parser/isoparser/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    相关资源
    最近更新 更多