代码之家  ›  专栏  ›  技术社区  ›  dzboot02

MP4Parser版本冲突(压缩视频没有声音)

  •  8
  • dzboot02  · 技术社区  · 7 年前

    我在项目中使用这两个库:

    https://github.com/HemendraGangwar/VideoTrimmingLikeWhatsapp https://github.com/fishwjy/VideoCompressor

    两个库都在本地导入到我的项目中(即复制它们并将它们添加到项目中)

    两个库单独使用时都可以正常工作,但是当我一起使用它们时,会出现类型错误 Program type already present 我通过删除文件解决了这个问题 isoparser-1.0.6.jar 从第二个库中,因为我注意到这两个库使用同一个库。 'com.googlecode.mp4parser:isoparser' 但有不同的版本: 1.1.21 对于第一个和 1.0.6 第二个。

    当只使用旧库时,我得到以下代码:

    错误:找不到符号类filedatasourceviaheapimpl

    它现在正在工作,但问题是输出视频(压缩后)没有声音。我该怎么解决?

    下面是我用来压缩视频的代码(修剪后):

    VideoController.getInstance().convertVideo(tmpFile.toString(), dstFile.toString(),
               VideoController.COMPRESS_QUALITY_MEDIUM, null);
    

    编辑1

    用相同的视频来描述场景:

    VideoTrimmingLikeWhatsApp版本1.1.21=>有效

    Verion 1.0.6的VideoTrimmingLikeWhatsApp不起作用(缺少类的编译错误)

    videocompressor with 1.1.21=>不工作(无声音)

    视频压缩程序,1.0.6=>工作

    我试了很多东西,但我在这里失去了踪迹。我也试过用 SiliCompressor 它似乎也在使用MP4Isoparser的1.0.6版本,同样的问题也在发生,输出视频没有声音。我发布了一个问题 here 几天前,但我认为他们不会很快解决这个问题。

    我也提交了 here .

    我试着从 here ,并尝试在本地导入它以便可以更改包名称,但无法,因为它使用 Maven Gradle . 旧版本是 jar 文件,我需要反编译它,这样我就可以搞乱它。我能做到吗?

    我也试过用 ffmpeg 库,但与mp4isoparser相比,它们的工作速度非常慢

    1 回复  |  直到 7 年前
        1
  •  0
  •   fonkap    7 年前

    如果问题真的是由库版本引起的,那就很难解决了。

    首先我要再检查一遍。你说你分别测试了libs,它们都工作了,但是,你有没有试过用‘videotrimminglikewhatsapp’的输出作为‘videocompressor’的输入?

    我怀疑“视频压缩机”在某些情况下用音频做奇怪的事情,在这个问题中有人说没有音频:

    https://github.com/fishwjy/VideoCompressor/issues/1

    如果你得到一个没有声音的视频 使用'videocompressor'和他自己的'isoparser'版本,你可以放弃库版本作为问题的根源。

    然后,我认为,您可以:替换“videocompressor”:它似乎依赖于android库来执行压缩,您可以自己实现它,或者您可以找到另一个库来完成这项工作。或者你可以修复“视频压缩程序”:你可以向作者报告这个问题,或者你可以自己尝试修复它。

    如果确认问题是版本冲突 然后我可以想出几个选择,但没有一个是容易的:

    • 您可以尝试使用类加载器,并强制每个库使用其正确版本的“isoparser”。仅此一项就很难做到,而且在android中可能会有很大的问题。

    • 您可以修补一个版本的ISOPARSARER,重命名包名(例如,以CO.GoGeLogoD.MP4PARSReLoad),所以它们的两个版本可以共存,您还应该修补客户端库来使用新的包名。这很难看,但似乎可行。

    • 您可以尝试将“VideoCompressor”更新为与Isoparser-1.1.21兼容。你也可以要求作者这么做。

    • 同样,您可以替换“videocompressor”(也可以是“videotrimminglikewhatsapp”)

    我知道这不是一个明确的答案,但我希望它能对你有所帮助。

    推荐文章