Giter Club home page Giter Club logo

videffects's Introduction

VidEffects

Codewake Android Arsenal

This is an Android library which can be used to apply different Filters/Effects on videos. It uses vertexShaders and fragmentShaders to apply effects on GLSurfaceView. It uses MediaPlayer instance for playing videos on GlSurfaceView. See the sample app in order to see a working demo.

Supported Effects

The following list of effects are currently avaialble and can be applied using VidEffects

Limitations

The effects applied using this library are temporary. What that means is that the orignal video doesn't change. Effects are only applied during video playback and once the video ends the effects end with it. In the future, i am aiming to apply permanant effect to videos. You guys are welcome to help out using PRs.
For now, if you are really desperate and want to apply effects then you can use FFmpeg to apply effects on videos. Details about how to do that can be seen on this wiki page

How to use it

  • Add the following code to your project's build.gradle file
    repositories {
          jcenter()
      }

- Add the following gradle path to your `app/build.gradle` file

 ```sh
dependencies {
//	Gradle path for VidEffects
    	compile 'com.sherazkhilji.videffects:videffects:1.0.0'
}
  • Then you need to add VideoSurfaceView either using java code or as xml in your layout file.
<com.sherazkhilji.videffect.view.VideoSurfaceView
       android:id="@+id/mVideoSurfaceView"
       android:layout_width="match_parent"
       android:layout_height="match_parent" />
  • Then you need to reference the VideoSurfaceView and call its init() method in your Activity or Fragment onCreate() supplying it with a MediaPlayer instance and a Video Effect. Also you would need to call VideoSurfaceView onResume() in your Activity or Fragment onResume() so that your video is rendered properly.
	@Override
   protected void onCreate(Bundle savedInstanceState) {
   	super.onCreate(savedInstanceState);

   	mResources = getResources();
   	mMediaPlayer = new MediaPlayer();

   	try {
   		// Load video file from SD Card
   		// File dir = Environment
   		// .getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
   		// File file = new File(dir,
   		// "sample.mp4");
   		// mMediaPlayer.setDataSource(file.getAbsolutePath());
   		// -----------------------------------------------------------------------
   		// Load video file from Assets directory
   		AssetFileDescriptor afd = getAssets().openFd("sample.mp4");
   		mMediaPlayer.setDataSource(afd.getFileDescriptor(),
   				afd.getStartOffset(), afd.getLength());
   	} catch (Exception e) {
   		Log.e(TAG, e.getMessage(), e);
   	}
   	// Initialize VideoSurfaceView using code
   	// mVideoView = new VideoSurfaceView(this);
   	// setContentView(mVideoView);
   	// or
   
   	mVideoView = (VideoSurfaceView) findViewById(R.id.mVideoSurfaceView);
   	mVideoView.init(mMediaPlayer,
   			new DuotoneEffect(Color.YELLOW, Color.RED));
           setContentView(R.layout.activity_sampleplayer);
   }

   @Override
   protected void onResume() {
   	super.onResume();
   	mVideoView.onResume();
   }
  • Incase of any confusion, checkout the SamplePlayerActivity for a complete example on how to apply different Effects on your videos.

See it in working

Video screenshot without any Effect

Video screenshot without any Effect

Video screenshot with Black and White Effect

Video screenshot with Black and White Effect

Video screenshot with Invert Colors Effect

Video screenshot with Invert Colors Effect

Special Thanks to

Development

Want to contribute or add some new Effects? Great! Fork it and send me a pull request or contact me on the email below, if you want to become a permanant contributor.

Developed by

License

Copyright 2016 Sheraz Ahmad Khilji

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.

videffects's People

Contributors

krazykira avatar robd avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.