这个库在生成一个Mp4和用相机进行ExoPlayer视频和录像时应用了视频过滤器.
This library apply video filter on generate an Mp4 and on ExoPlayer video and Video Recording with Camera2.
Android MediaCodec API is used this library.
Sample Video No filter
GlGlayScaleFilter apply
GlMonochromeFilter apply
GlWatermarkFilter apply
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:GPUVideo-android:v0.1.2'
// if apply video filter on ExoPlayer video
implementation 'com.google.android.exoplayer:exoplayer-core:2.15.1'
}
…
| 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 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. |
| flipVertical | Flip Vertical on exported video. Default flipVertical = false. |
| flipHorizontal | Flip Horizontal on exported video. Default flipHorizontal = false. |
Create SimpleExoPlayer instance. In this case, play MP4 file.
Read this if you want to play other video formats.
…
Create GPUPlayerView and set SimpleExoPlayer to GPUPlayerView.
gpuPlayerView = new GPUPlayerView(this);
// set SimpleExoPlayer
gpuPlayerView.setSimpleExoPlayer(player);
gpuPlayerView.setLayoutParams(new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
// add gpuPlayerView to WrapperView
((MovieWrapperView) findViewById(R.id.layout_movie_wrapper)).addView(gpuPlayerView);
gpuPlayerView.onResume();
Set Filter. Filters is here.
Custom filters can be created by inheriting GlFilter.java.
gpuPlayerView.setGlFilter(new GlSepiaFilter());
SetUp on onResume method.
sampleGLView = new GLSurfaceView(getApplicationContext());
FrameLayout frameLayout = findViewById(R.id.wrap_view);
frameLayout.addView(sampleGLView);
gpuCameraRecorder = new GPUCameraRecorderBuilder(activity, sampleGLView)
.lensFacing(LensFacing.BACK)
.build();
Release on onPause method.
sampleGLView.onPause();
gpuCameraRecorder.stop();
gpuCameraRecorder.release();
gpuCameraRecorder = null;
((FrameLayout) findViewById(R.id.wrap_view)).removeView(sampleGLView);
sampleGLView = null;
Start and Stop Video record.
// record start.
gpuCameraRecorder.start(filepath);
// record stop.
gpuCameraRecorder.stop();
This filter is OpenGL Shaders to apply effects on camera preview. Custom filters can be created by inheriting GlFilter.java. , default GlFilter(No filter). Filters is here.
gpuCameraRecorder.setFilter(GlFilter);
Other methods.
// if flash enable, turn on or off camera flash.
gpuCameraRecorder.switchFlashMode();
// autofocus change.
gpuCameraRecorder.changeAutoFocus();
// set focus point at manual.
gpuCameraRecorder.changeManualFocusPoint(float eventX, float eventY, int viewWidth, int viewHeight);
// scale camera preview
gpuCameraRecorder.setGestureScale(float scale);
| method | description |
|---|---|
| cameraRecordListener | onGetFlashSupport, onRecordComplete, onError, and onCameraThreadFinish. Detail is here. |
| filter | This filter is OpenGL Shaders to apply effects on camera preview. Custom filters can be created by inheriting GlFilter.java. , default GlFilter(No filter). Filters is here. |
| videoSize | Resolution of the movie, default width=720, height=1280. |
| cameraSize | Preview size. |
| lensFacing | Select back or front camera. Default LensFacing.FRONT. |
| flipHorizontal | Flip Horizontal on recorded video. Default flipHorizontal = false. |
| flipVertical | Flip Vertical on recorded video. Default flipVertical = false. |
| mute | Mute audio track on recorded video. Default mute = false. |
| recordNoFilter | No Filter on recorded video although preview apply a filter. Default recordNoFilter = false. |
Copyright (C) 2014 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
暂无开放 Issues,或尚未同步最近议题。