java - mp4parser 版本冲突(压缩视频没有声音)
问题描述
我在我的项目中使用这两个库:
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 => 有效
VideoTrimmingLikeWhatsapp with verion 1.0.6 => 不起作用(缺少类的编译错误)
带有 1.1.21 => 的 VideoCompressor 不起作用(没有声音)
VideoCompressor 1.0.6 => 工作
我尝试了很多东西,但我在这里失去了踪迹。我还尝试使用SiliCompressor,它似乎也在使用 mp4isoparser 的 1.0.6 版,并且发生了同样的问题,输出视频没有声音。几天前我在这里发布了一个问题,但我认为他们不会很快解决这个问题。
我也在这里提交。
我尝试从这里下载 mp4parser 版本 1.1.21 ,并尝试在本地导入它以便我可以更改包名称,但我不能,因为它使用Maven
not Gradle
。旧版本是一个jar
文件,我需要反编译它才能弄乱它。我可以这样做吗?
我也尝试过使用ffmpeg
库,但与 mp4isoparser 相比,它们的工作速度都很慢
编辑 2
SiliCompressor的作者已经回复了我打开的here,他说问题应该现在解决了。目前我无法验证它,因为我不再从事该项目。如果有人可以确认,请告诉我添加此主题的答案。
解决方案
这种组合对我有用:
implementation 'com.iceteck.silicompressorr:silicompressor:2.2.3'
implementation ('com.googlecode.mp4parser:isoparser:1.0.6') {
exclude group: 'org.aspectj', module: 'aspectjrt'
}
归功于:https ://github.com/AndreyAsadchy https://github.com/Tourenathan-G5organisation/SiliCompressor/issues/141#issuecomment-625308490
推荐阅读
- python-3.x - 知道为什么 python3 不将 False 视为布尔值吗?
- node.js - Sequelize 与关联的外键
- flutter - Flutter Android 通知图标(灰色方块)
- javascript - 如何从 OpenWeatherMap API 获取天气描述
- asp.net-mvc - 如何在 ASP.NET MVC 5 中使用一个连接字符串在某些数据库之间切换
- python - 为什么 Windows 上的 cPython 没有诅咒?
- c++ - CMake 无法检测不同静态库中的符号冲突
- laravel - laravel api 资源自动增量
- python - 如何在 Sympy 中更快地求解线性符号表达式
- javascript - 如何缓冲sql查询结果