MCPcopy Index your code
hub / github.com/MasayukiSuda/Mp4Composer-android

github.com/MasayukiSuda/Mp4Composer-android @v0.4.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.4.1 ↗ · + Follow
683 symbols 1,374 edges 92 files 72 documented · 11% updated 5y agov0.4.1 · 2020-11-25★ 98134 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Mp4Composer-android

Platform API

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

Sample Video No filter GlGlayScaleFilter apply GlMonochromeFilter apply GlWatermarkFilter apply

Gradle

Step 1. Add the JitPack repository to your build file

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

Step 2. Add the dependency

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

Sample Dependencies

License

MIT License

Extension points exported contracts — how you extend this code

DataSource (Interface)
(no doc) [6 implementers]
mp4compose/src/main/java/com/daasuu/mp4compose/source/DataSource.java
VideoLoadListener (Interface)
Created by sudamasayuki on 2017/11/22. [2 implementers]
sample/src/main/java/com/daasuu/sample/video/VideoLoadListener.java
Logger (Interface)
The logger interface used to log information to the console. [2 implementers]
mp4compose/src/main/java/com/daasuu/mp4compose/logger/Logger.java
PinchGestureListener (Interface)
(no doc) [1 implementers]
sample/src/main/java/com/daasuu/sample/widget/PinchGestureDetector.java
Listener (Interface)
(no doc)
mp4compose/src/main/java/com/daasuu/mp4compose/composer/Mp4Composer.java
RotateGestureListener (Interface)
(no doc) [1 implementers]
sample/src/main/java/com/daasuu/sample/widget/RotateGestureDetector.java
DragGestureListener (Interface)
(no doc) [1 implementers]
sample/src/main/java/com/daasuu/sample/widget/DragGestureDetector.java
MoveDragXYListener (Interface)
(no doc)
sample/src/main/java/com/daasuu/sample/widget/AllGestureDetector.java

Core symbols most depended-on inside this repo

getHandle
called by 99
mp4compose/src/main/java/com/daasuu/mp4compose/filter/GlFilter.java
release
called by 23
mp4compose/src/main/java/com/daasuu/mp4compose/composer/IAudioComposer.java
getWidth
called by 23
mp4compose/src/main/java/com/daasuu/mp4compose/gl/GlFramebufferObject.java
getHeight
called by 23
mp4compose/src/main/java/com/daasuu/mp4compose/gl/GlFramebufferObject.java
error
called by 16
mp4compose/src/main/java/com/daasuu/mp4compose/logger/Logger.java
getRotation
called by 15
mp4compose/src/main/java/com/daasuu/mp4compose/Rotation.java
setup
called by 15
mp4compose/src/main/java/com/daasuu/mp4compose/composer/IAudioComposer.java
debug
called by 14
mp4compose/src/main/java/com/daasuu/mp4compose/logger/Logger.java

Shape

Method 578
Class 87
Interface 11
Enum 7

Languages

Java100%

Modules by API surface

mp4compose/src/main/java/com/daasuu/mp4compose/composer/SonicAudioProcessor.java57 symbols
mp4compose/src/main/java/com/daasuu/mp4compose/composer/Mp4Composer.java35 symbols
sample/src/main/java/com/daasuu/sample/FillModeCustomActivity.java19 symbols
mp4compose/src/main/java/com/daasuu/mp4compose/filter/GlToneCurveFilter.java17 symbols
sample/src/main/java/com/daasuu/sample/BasicUsageActivity.java16 symbols
mp4compose/src/main/java/com/daasuu/mp4compose/composer/DecoderSurface.java16 symbols
mp4compose/src/main/java/com/daasuu/mp4compose/composer/Mp4ComposerEngine.java15 symbols
sample/src/main/java/com/daasuu/sample/widget/AllGestureDetector.java14 symbols
mp4compose/src/main/java/com/daasuu/mp4compose/composer/AudioChannelWithSP.java14 symbols
mp4compose/src/main/java/com/daasuu/mp4compose/filter/GlFilter.java13 symbols
sample/src/main/java/com/daasuu/sample/widget/PlayerTextureView.java12 symbols
mp4compose/src/main/java/com/daasuu/mp4compose/FillModeCustomItem.java12 symbols

For agents

$ claude mcp add Mp4Composer-android \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact