OpenSLMediaPlayer

Additional

Language
Java
Version
0.7.2 (Oct 8, 2016)
Created
Nov 16, 2014
Updated
Oct 29, 2017 (Retired)
Owner
Haruki Hasegawa (h6ah4i)
Contributor
Haruki Hasegawa (h6ah4i)
1
Activity
Badge
Generate
Download
Source code

Promotion

OpenSLMediaPlayer

Re-implementation of Android's MediaPlayer and audio effect classes based on OpenSL ES APIs.

Motivation

I decided to develop this library to solve these frustrations.

Features

Advantages

  • Provides both C++ and Java API sets
  • Smooth fade in/out when starts/pauses playback
  • High quality resampler
  • 10 bands graphic equalizer & pre. amplifier
  • High quality Visualizer class (floating point, stereo, 32k samples/capture, 60 sampling/second)

Disadvantages

  • Does not support video playback, audio only ( Please use MediaPlayer or ExoPlayer for video playback)
  • Consumes more CPU resources than standard MediaPlayer and other AudioTrack/OpenSL based audio player products (ex. PowerAmp)

Misc.

  • Highly compatibility with standard MediaPlayer and audio effect classes
  • Implements a lot of workarounds, more better behavior and well-tested (Standard* prefixed API classes)
  • Provides Hybrid media player factory which is a player using OpenSL ES for decoding audio and using AudioTrack for playback. This is the most recommended MediaPlayer because it provides more tolerance for audio glitches than OpenSLMediaPlayer but it can use all features of OpenSLMediaPlayer!
  • Provides some compatibility class or methods for older devices
  • NEON/SSE optimized

Target platforms

  • Android API level 14+ (since this library depends decoding feature introduced from API level 14)

Latest version

  • Version 0.7.5 (May 6, 2017)

Demo application (pre-built example apps)

See GitHub Pages site of this project.

Getting started

Use pre-built library (for Android Studio only)

  1. Add these lines to build.gradle of your project
dependencies {
    compile 'com.h6ah4i.android:openslmediaplayer:0.7.5'
}
  1. That's all ;)

Build from source

If you want to build this library from source, please refer to this article.

Documentation

Refer to Wiki and JavaDoc.

ToDos

  • More optimize
  • Improve JavaDoc comments

License

This library is licensed under the Apache Software License, Version 2.0, and contains some source code files delivered from product of Android Open Source Project (AOSP). See AOSP.md for details.

Note that this library uses some third party libraries, so you also have to take care of their licenses.