https://github.com/MasayukiSuda/Mp4Composer-android
This library generate an Mp4 movie using Android MediaCodec API and apply filter, scale, trim, transcode, crop, timeScale, mute and rotate Mp4.
https://github.com/MasayukiSuda/Mp4Composer-android
android android-library android-transcoder crop-video glsl-shader h264 h265 mediacodec opengles shader video-compressor video-crop video-editing video-editor video-filtering video-processing video-scaler video-transcoding video-trim video-trimmer
Last synced: about 1 month ago
JSON representation
This library generate an Mp4 movie using Android MediaCodec API and apply filter, scale, trim, transcode, crop, timeScale, mute and rotate Mp4.
- Host: GitHub
- URL: https://github.com/MasayukiSuda/Mp4Composer-android
- Owner: MasayukiSuda
- License: mit
- Created: 2018-01-15T11:27:23.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2020-11-25T15:32:02.000Z (over 4 years ago)
- Last Synced: 2024-07-31T19:23:46.566Z (9 months ago)
- Topics: android, android-library, android-transcoder, crop-video, glsl-shader, h264, h265, mediacodec, opengles, shader, video-compressor, video-crop, video-editing, video-editor, video-filtering, video-processing, video-scaler, video-transcoding, video-trim, video-trimmer
- Language: Java
- Homepage:
- Size: 20.9 MB
- Stars: 941
- Watchers: 31
- Forks: 214
- Open Issues: 35
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-lists - Mp4Composer-android
- awesome - Mp4Composer-android - This library generate an Mp4 movie using Android MediaCodec API and apply filter, scale, trim, transcode, crop, timeScale, mute and rotate Mp4. (video-trimmer)
- awesome - Mp4Composer-android - This library generate an Mp4 movie using Android MediaCodec API and apply filter, scale, trim, transcode, crop, timeScale, mute and rotate Mp4. (video-editor)
README
# Mp4Composer-android
[](http://developer.android.com/index.html)![]()
[](https://android-arsenal.com/api?level=21)This library generate an Mp4 movie using Android MediaCodec API and apply filter, scale, trim, transcode, crop, mute and rotate Mp4.
Idea from: [android-transcoder](https://github.com/ypresto/android-transcoder)
Sample Video
No filter
GlGlayScaleFilter
apply
GlMonochromeFilter
apply
GlWatermarkFilter
apply## Gradle
Step 1. Add the JitPack repository to your build file
```groovy
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
```
Step 2. Add the dependency
```groovy
dependencies {
implementation 'com.github.MasayukiSuda:Mp4Composer-android:v0.4.1'
}
```## Usage
```
new Mp4Composer(srcMp4Path, destMp4Path)
.rotation(Rotation.ROTATION_90)
.size((width) 540, (height) 960)
.fillMode(FillMode.PRESERVE_ASPECT_FIT)
.filter(new GlFilterGroup(new GlMonochromeFilter(), new GlVignetteFilter()))
.trim((trimStartMs) 200, (trimEndMs) 5000)
.listener(new Mp4Composer.Listener() {
@Override
public void onProgress(double progress) {
Log.d(TAG, "onProgress = " + progress);
}@Override
public void onCompleted() {
Log.d(TAG, "onCompleted()");
runOnUiThread(() -> {
Toast.makeText(context, "codec complete path =" + destPath, Toast.LENGTH_SHORT).show();
});
}@Override
public void onCanceled() {
Log.d(TAG, "onCanceled");
}@Override
public void onFailed(Exception exception) {
Log.e(TAG, "onFailed()", exception);
}
})
.start();
```
## Builder Method
| method | description |
|:---|:---|
| rotation | Rotation of the movie, default Rotation.NORMAL |
| size | Resolution of the movie, default same resolution of src movie. If you specify a resolution that MediaCodec does not support, an error will occur. |
| fillMode | Options for scaling the bounds of an movie. PRESERVE_ASPECT_FIT is fit center. PRESERVE_ASPECT_CROP is center crop , default PRESERVE_ASPECT_FIT.
FILLMODE_CUSTOM is used to crop a video. Check this for behavior. Sample source code is this. |
| filter | This filter is OpenGL Shaders to apply effects on video. Custom filters can be created by inheriting GlFilter.java. , default GlFilter(No filter). Filters is here. |
| videoBitrate | Set Video Bitrate, default video bitrate is 0.25 * 30 * outputWidth * outputHeight |
| mute | Mute audio track on exported video. Default `mute = false`. |
| trim | Trim both audio and video tracks to the provided start and end times, inclusive. Default does not trim anything from the start or end. |
| flipVertical | Flip Vertical on exported video. Default `flipVertical = false`. |
| flipHorizontal | Flip Horizontal on exported video. Default `flipHorizontal = false`. |
| videoFormatMimeType | The mime type of the video format on exported video. default AUTO. Suppurt HEVC, AVC, MPEG4, H263. Check this. |
| timeScale | Set TimeScale. default value is 1f. should be in range 0.125 (-8X) to 8.0 (8X) |## References And Special Thanks to
* [android-transcoder](https://github.com/ypresto/android-transcoder)
* [android-transcoder Japanese blog](http://qiita.com/yuya_presto/items/d48e29c89109b746d000)
* [android-gpuimage](https://github.com/CyberAgent/android-gpuimage)
* [Android MediaCodec stuff](http://bigflake.com/mediacodec/)
* [grafika](https://github.com/google/grafika)
* [libstagefright](https://android.googlesource.com/platform/frameworks/av/+/lollipop-release/media/libstagefright)## Sample Dependencies
* [glide](https://github.com/bumptech/glide)
* [ExoPlayer](https://github.com/google/ExoPlayer)## License
[MIT License](https://github.com/MasayukiSuda/Mp4Composer-android/blob/master/LICENSE)