Androidで、Mp4にウォータマークつけたり、フィルターかけたりする

#Mp4Composer-android



<a href="https://github.com/MasayukiSuda/Mp4Composer-android">Mp4Composer-android</a>

AndroidでMp4にウォータマークつけたり、フィルターかけたりするのを簡単にできる<a href="https://github.com/MasayukiSuda/Mp4Composer-android">ライブラリ</a>を作成しました。
<a href="https://qiita.com/yuya_presto">yprestoさん</a>の<a href="https://qiita.com/yuya_presto/items/d48e29c89109b746d000">記事</a>、<a href ="https://github.com/ypresto/android-transcoder">ライブラリ</a>を大変参考にして作成しました。

## Gradle
```groovy
    dependencies {
        // jCenter
        implementation 'com.daasuu:Mp4Composer-android:0.1.0'
    }
```

## Usage
ウォーターマークをてっとり早くつけたいという場合は下記で完了です。

```java
    new Mp4Composer(srcMp4Path, destMp4Path)
            .filter(new GlWatermarkFilter(watermarkBitmap, GlWatermarkFilter.Position.RIGHT_BOTTOM))
            .start();
```


フィルターをかけたいんだよねという場合は下記で完了です。

```java
    new Mp4Composer(srcMp4Path, destMp4Path)
            .filter(new GlSepiaFilter())
            .start();
```

その他、オプション、ビルダーメソッドは基本的に下記の感じになります。

```java
    new Mp4Composer(srcMp4Path, destMp4Path)
            .rotation(Rotation.ROTATION_90)
            .size((width) 540, (height) 960)
            .fillMode(FillMode.PRESERVE_ASPECT_FIT)
            .filter(new GlSepiaFilter())
            .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 |
| 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 |
| filter | This filter is OpenGL Shaders to apply effects on video. Custom filters can be created by inheriting <a href="https://github.com/MasayukiSuda/Mp4Composer-android/blob/master/mp4compose/src/main/java/com/daasuu/mp4compose/filter/GlFilter.java">GlFilter.java</a>. , default GlFilter(No filter) |
| videoBitrate | Set Video Bitrate, default video bitrate is 0.25 * 30 * outputWidth * outputHeight |




フィルターをカスタムする場合は、[GlFilter](https://github.com/MasayukiSuda/Mp4Composer-android/blob/master/mp4compose/src/main/java/com/daasuu/mp4compose/filter/GlFilter.java)を継承すれば作成可能です。


<br>
是非、<a href="https://github.com/MasayukiSuda/Mp4Composer-android">Mp4Composer-android</a>をご覧になり、Starもつけていただけるととても嬉しく思います。
こんなフィルターも作れるとか、機能追加したい等のpull reqestも大歓迎です！