
Android-video-trimmer
Helps to trim local videos with many customizations on Android applications using exoplayer2 and FFmpeg Demo app

How to use
For a working implementation, please have a look at the Sample Project
- Include the library as local library project.
- Add the dependency to your app
build.gradle file
// replace x.y.z with latest available jitpack version
dependencies {
implementation 'com.github.a914-gowtham:android-video-trimmer:x.y.z'
}
- Add to project’s root
build.gradle file:
allprojects {
repositories {
maven { url 'https://jitpack.io' }
}
}
- Create a global variable for ActivityResultLauncher
//Java
ActivityResultLauncher<Intent> startForResult = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
result -> {
if (result.getResultCode() == Activity.RESULT_OK &&
result.getData() != null) {
Uri uri = Uri.parse(TrimVideo.getTrimmedVideoPath(result.getData()));
Log.d(TAG, "Trimmed path:: " + uri);
} else
LogMessage.v("videoTrimResultLauncher data is null");
});
//Kotlin
val startForResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
result: ActivityResult ->
if (result.resultCode == Activity.RESULT_OK &&
result.getData() != null) {
Uri uri = Uri.parse(TrimVideo.getTrimmedVideoPath(result.getData()))
Log.d(TAG, "Trimmed path:: " + uri)
}else
LogMessage.v("videoTrimResultLauncher data is null");
}
- Add the code for opening Trim Activity.
TrimVideo.activity(String.valueOf(videoUri))
.setHideSeekBar(true)
.disableCompression() // to disable compression ui. enabled by default
.start(this,startForResult);
Custom TrimTypes
TrimType Default:
TrimVideo.activity(videoUri)
.start(this,startForResult);
TrimType Fixed Duration:
TrimVideo.activity(videoUri)
.setTrimType(TrimType.FIXED_DURATION)
.setFixedDuration(30) //seconds
.start(this,startForResult);
TrimType Minimum Duration:
TrimVideo.activity(videoUri)
.setTrimType(TrimType.MIN_DURATION)
.setMinDuration(30) //seconds
.start(this,startForResult);
TrimType Min-Max Duration:
TrimVideo.activity(videoUri)
.setTrimType(TrimType.MIN_MAX_DURATION)
.setMinToMax(10, 30) //seconds
.start(this,startForResult);
Proguard Rules
-dontwarn com.gowtham.library**
-keep class com.gowtham.library** { *; }
-keep interface com.gowtham.library** { *; }
Development roadmap:
Currently, compression only reduces the bitRate to reduce the file size. converting video to the selected resolution is in under development - DONE
- Showing file size estimation in toolbar subtitle - to be worked
Compatibility
- Library - Android Nougat 7.0+ (API 24)
- Sample - Android Kitkat 4.4+ (API 19)
License
This library is licensed under the MIT License.
Support
Show your support by giving a star to this repository.
Collaboration
There are many ways of improving and adding more features, so feel free to collaborate with ideas, issues and/or pull requests.
评论