我正在尝试使用以下两个库来修剪和压缩视频:Silicompressor和k4l-video-trimmer。 问题是两个库都使用mp4parser,但版本不同。 k4l-video-trimmer使用版本1.1.20作为build.gradle中的依赖项,而Silicompressor使用版本1.0.6作为jar文件。 现在项目构建良好,但是当我尝试运行它时,出现错误:
使用操作系统独立路径“ builddef.lst”找到了多个文件
我在应用程序级别build.gradle中添加了以下几行:
android {
packagingOptions {
exclude 'builddef.lst'
exclude 'version.txt'
exclude 'isoparser-default.properties'
}
}
然后我遇到另一个无法解决的错误:
程序类型已存在:com.coremedia.iso.BoxParser 消息{种类=错误,文本=程序类型已存在: com.coremedia.iso.BoxParser,sources = [未知源文件],工具 name = Optional.of(D8)}
我用过
implementation ('life.knowledge4:k4l-video-trimmer:1.0') {
exclude group: 'com.googlecode.mp4parser'
}
代替
implementation 'life.knowledge4:k4l-video-trimmer:1.0'
现在,当我尝试修剪视频时,项目运行并崩溃。
java.lang.NoClassDefFoundError:无法解决以下问题:Lcom / googlecode / mp4parser / FileDataSourceViaHeapImpl; 在life.knowledge4.videotrimmer.utils.TrimVideoUtils.genVideoUsingMp4Parser(TrimVideoUtils.java:72) 在life.knowledge4.videotrimmer.utils.TrimVideoUtils.startTrim(TrimVideoUtils.java:65) 在life.knowledge4.videotrimmer.K4LVideoTrimmer $ 5.execute(K4LVideoTrimmer.java:354) 在life.knowledge4.videotrimmer.utils.BackgroundExecutor $ Task.run(BackgroundExecutor.java:212) 在java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:428) 在java.util.concurrent.FutureTask.run(FutureTask.java:237) 在java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272) 在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:607) 在java.lang.Thread.run(Thread.java:761)
我用jarjar重新打包了Silicompressor使用的jar文件,从com.googlecode.mp4parser到org.repackage.com.googlecode.mp4parser。仍然有同样的问题。
这是我的应用程序级别的build.gradle文件:
apply plugin: 'com.android.application'
configurations {
all*.exclude group: 'com.android.support', module: 'support-v4'
}
android {
compileSdkVersion 27
buildToolsVersion "27.0.3"
defaultConfig {
applicationId "---"
minSdkVersion 16
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
repositories {
google()
jcenter({url "http://jcenter.bintray.com/"})
mavenLocal()
jcenter()
maven { url "http://jzaccone.github.io/SlidingMenu-aar" }
maven { url "https://jitpack.io" }
maven { url 'https://maven.google.com' }
maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
}
/*packagingOptions {
exclude 'builddef.lst'
exclude 'version.txt'
exclude 'isoparser-default.properties'
}*/
}
dependencies {
...
implementation ('life.knowledge4:k4l-video-trimmer:1.0') {
exclude group: 'com.googlecode.mp4parser'
}
implementation 'com.iceteck.silicompressorr:silicompressor:2.1'
}
感谢您的光临!
答案 0 :(得分:2)
在 @MilanPansuriya 的帮助下,我终于能够解决此问题。请按照以下步骤解决上述问题:-
注意:-这两个库现在都可以正常工作,但是由于我们已将 FileDataSourceViaHeapImpl 更改为 FileDataSourceImpl ,有时我在修剪一些大尺寸的视频(这显然应该发生,而且旧版本的kl-trimmer的用户也报告过这种情况)。
到目前为止,这是我唯一可以获得的解决方案。如果有人有更好的解决方案,请也更新我们。谢谢。
答案 1 :(得分:0)
通过执行上述答案(合并两个库),我能够解决此问题,但就我而言,我正在使用SiliCompressor和 AndroidDeveloperLB/VideoTrimmer,并且我还为遇到此问题并希望快速解决问题的所有人创建了一个库:) https://github.com/tobioyelekan/VideoTrimmerCompressor