我在我的项目中使用这两个库:
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
。
当只使用旧的库时,我得到了以下代码:
error: cannot find symbol class FileDataSourceViaHeapImpl
现在它正在工作,但问题是压缩后的输出视频没有声音。我该怎么解决?
这是我用于压缩视频(剪辑后)的代码:
VideoController.getInstance().convertVideo(tmpFile.toString(), dstFile.toString(),
VideoController.COMPRESS_QUALITY_MEDIUM, null);
编辑1
以下是使用相同视频的几种情况:
VideoTrimmingLikeWhatsapp 1.1.21版本 => 可以使用
VideoTrimmingLikeWhatsapp 1.0.6版本 => 无法使用(缺少类的编译错误)
VideoCompressor 1.1.21版本 => 无法使用(没有声音)
VideoCompressor 1.0.6版本 => 可以使用
我尝试了很多方法,但还是无法解决。我也尝试使用SiliCompressor,它似乎也使用mp4isoparser的1.0.6版本,但出现了同样的问题,输出的视频没有声音。我几天前在这里发布了一个问题,但我认为他们不会很快解决这个问题。
我也在这里提交了问题。
我尝试从这里下载mp4parser的1.1.21版本,并尝试在本地导入它,以便更改包名称,但我无法做到这一点,因为它使用的是Maven而不是Gradle。旧版是一个jar文件,我需要对其进行反编译以便于修改。我能做到吗?
我还尝试使用ffmpeg
库,但所有的库都比mp4isoparser工作得慢。
编辑2
SiliCompressor的作者已经回复了我在这里发布的问题,他说该问题现在应该已经解决。目前我无法验证,因为我不再从事该项目。如果有人能确认,请告诉我将答案添加到此主题中。