Video Trimmer | Video Cropper |
FFmpeg is a powerful multimedia framework which allows us to decode, encode, transcode, stream, filter and play most of the media content available now. With the help of these tools, you can develop and application that can manipulate any form of media to the desired output. Sky is not the limit when using FFmpeg. I prefer FFmpeg-all which is a Bible for FFmpeg but it is difficult to read if you do not know what you are looking for. To make it easy, I will summarise the basics of video manipulations using FFmpeg which, then you can use in your own applications or libraries that you are working on. I have developed a simple library that enables you to trim and crop a video, additionally you can compress any video and convert it into any format that you desire.
dependencies {
implementation 'com.github.tizisdeepan:videoeditor:<latest_version>'
}
allprojects {
repositories {
maven { url 'https://jitpack.io' }
}
}
<com.video.trimmer.view.VideoTrimmer
android:id="@+id/videoTrimmer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/header"/>
<com.video.trimmer.view.VideoCropper
android:id="@+id/videoCropper"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/header"/>
class MainActivity : AppCompatActivity(), OnTrimVideoListener {
...
override fun onTrimStarted(){
}
override fun getResult(uri: Uri){
}
override fun cancelAction(){
}
override fun onError(message: String){
}
}
class MainActivity : AppCompatActivity(), OnTrimVideoListener {
...
override fun onCropStarted(){
}
override fun getResult(uri: Uri){
}
override fun cancelAction(){
}
override fun onError(message: String){
}
override fun onProgress(progress: Float){
}
}
videoTrimmer.setTextTimeSelectionTypeface(FontsHelper[this, FontsConstants.SEMI_BOLD])
.setOnTrimVideoListener(this)
.setOnVideoListener(this)
.setVideoURI(Uri.parse(path))
.setVideoInformationVisibility(true)
.setMaxDuration(10)
.setMinDuration(2)
.setDestinationPath(Environment.getExternalStorageDirectory().toString() + File.separator + "temp" + File.separator + "Videos" + File.separator)
videoCropper.setVideoURI(Uri.parse(path))
.setOnCropVideoListener(this)
.setMinMaxRatios(0.3f, 3f)
.setDestinationPath(Environment.getExternalStorageDirectory().toString() + File.separator + "temp" + File.separator + "Videos" + File.separator)
Voila! You have implemented an awesome Video Editor for your Android Project now!
- Deepan Elango - tizisdeepan@gmail.com