{"id":19793654,"url":"https://github.com/h6ah4i/android-openslmediaplayer","last_synced_at":"2025-04-05T08:09:31.634Z","repository":{"id":23356543,"uuid":"26717500","full_name":"h6ah4i/android-openslmediaplayer","owner":"h6ah4i","description":"Re-implementation of Android's MediaPlayer and audio effect classes based on OpenSL ES APIs.","archived":false,"fork":false,"pushed_at":"2023-08-22T10:20:07.000Z","size":8547,"stargazers_count":419,"open_issues_count":37,"forks_count":93,"subscribers_count":32,"default_branch":"develop","last_synced_at":"2025-03-29T07:09:41.243Z","etag":null,"topics":["android","audio","media-player","opensl-es","opensles"],"latest_commit_sha":null,"homepage":"https://openslmediaplayer.h6ah4i.com","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/h6ah4i.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-11-16T15:02:46.000Z","updated_at":"2025-03-28T03:12:42.000Z","dependencies_parsed_at":"2024-11-12T07:10:51.221Z","dependency_job_id":"99480725-e297-4f3d-ab05-fc786d564d1c","html_url":"https://github.com/h6ah4i/android-openslmediaplayer","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/h6ah4i%2Fandroid-openslmediaplayer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/h6ah4i%2Fandroid-openslmediaplayer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/h6ah4i%2Fandroid-openslmediaplayer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/h6ah4i%2Fandroid-openslmediaplayer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/h6ah4i","download_url":"https://codeload.github.com/h6ah4i/android-openslmediaplayer/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247305935,"owners_count":20917208,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","audio","media-player","opensl-es","opensles"],"created_at":"2024-11-12T07:10:42.219Z","updated_at":"2025-04-05T08:09:31.608Z","avatar_url":"https://github.com/h6ah4i.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"OpenSLMediaPlayer\n===============\n\nRe-implementation of Android's [MediaPlayer](http://developer.android.com/reference/android/media/MediaPlayer.html) and [audio effect classes](http://developer.android.com/reference/android/media/audiofx/package-summary.html) based on OpenSL ES APIs.\n\n[![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-OpenSLMediaPlayer-brightgreen.svg?style=flat)](https://android-arsenal.com/details/1/1434)\n\nMotivation\n---\n\nI decided to develop this library to solve these frustrations.\n\n- Android OS does not permit to create extension of [`AudioEffect`](http://developer.android.com/reference/android/media/audiofx/AudioEffect.html) in application layer\n- OpenSL ES is a primitive API sets, and it is difficult to use than [`MediaPlayer`](http://developer.android.com/reference/android/media/MediaPlayer.html) class in Java\n- [`Visualizer`](http://developer.android.com/reference/android/media/audiofx/Visualizer.html) provides very poor quality captured data (8 bit, monaural, 1024 samples/capture, 20 sampling/second)\n- [`Visualizer`](http://developer.android.com/reference/android/media/audiofx/Visualizer.html) does not work properly on some devices\n    - [android Issue 64423 \"Visualizer with audio session 0 does not always receive all of output mix\"](https://code.google.com/p/android/issues/detail?id=64423)\n    - [felixpalmer/android-visualizer \"Visualization does not work on the new Galaxy devices\"](https://github.com/felixpalmer/android-visualizer/issues/5)\n    - [Music Visualizer \"Limitations on Galaxy S3, S4 and Note 3 (Snapdragon Quad core model)\"](https://plus.google.com/110898804228810455198/posts/jXGKDLt9iTz)\n    - [Music Visualizer \"Limitations on Nexus 4, 5, and 7 (2013)\"](https://plus.google.com/110898804228810455198/posts/6chmkb9ix1s)\n- Android's [MediaPlayer](http://developer.android.com/reference/android/media/MediaPlayer.html) and [audio effect classes](http://developer.android.com/reference/android/media/audiofx/package-summary.html) are buggy...\n\nFeatures\n---\n\n### Advantages\n\n- Provides both C++ and Java API sets\n- Smooth fade in/out when starts/pauses playback\n- High quality resampler\n- 10 bands graphic equalizer \u0026 pre. amplifier\n- High quality Visualizer class (floating point, stereo, 32k samples/capture, 60 sampling/second)\n\n### Disadvantages\n\n- **Does not support video playback, audio only** ( Please use [`MediaPlayer`](http://developer.android.com/reference/android/media/MediaPlayer.html) or [`ExoPlayer`](http://developer.android.com/guide/topics/media/exoplayer.html) for video playback)\n- Consumes more CPU resources than standard MediaPlayer and other AudioTrack/OpenSL based audio player products (ex. PowerAmp)\n\n### Misc.\n\n- Highly compatibility with standard [`MediaPlayer`](http://developer.android.com/reference/android/media/MediaPlayer.html) and [`audio effect classes`](http://developer.android.com/reference/android/media/audiofx/package-summary.html)\n- Implements a lot of workarounds, more better behavior and well-tested ([`Standard*` prefixed API classes](../../wiki/OpenSL-prefixed-API-classes))\n- 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`!\n- Provides some compatibility class or methods for older devices\n- NEON/SSE optimized\n\n\nTarget platforms\n---\n\n- Android API level 14+   (since this library depends decoding feature introduced from API level 14)\n\n\nLatest version\n---\n\n- Version 0.7.5  (May 6, 2017)\n\n\nDemo application (pre-built example apps)\n---\n\nSee [GitHub Pages site of this project](http://h6ah4i.github.io/android-openslmediaplayer/).\n\n\nGetting started\n---\n\n### Use pre-built library (for Android Studio only)\n\n1. Add these lines to `build.gradle` of your project\n\n```groovy\ndependencies {\n    compile 'com.h6ah4i.android:openslmediaplayer:0.7.5'\n}\n```\n\n2. That's all ;)\n\n### Build from source\n\nIf you want to build this library from source, please refer to [this article](../../wiki/Build-From-Source).\n\nDocumentation\n---\n\nRefer to [Wiki](../../wiki) and [JavaDoc](https://h6ah4i.github.io/android-openslmediaplayer/javadoc/0.7.5/).\n\n\nToDos\n---\n\n- More optimize\n- Improve JavaDoc comments\n\n\nLicense\n---\n\nThis library is licensed under the [Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0), and contains some source code files delivered from product of Android Open Source Project (AOSP). See [`AOSP.md`](AOSP.md) for details.\n\n*Note that this library uses some third party libraries, so you also have to take care of their licenses.*\n\n---\n\n### License of OpenSLMediaPlayer (this library)\n\nSee [`LICENSE`](LICENSE) for full of the license text.\n\n    Copyright (C) 2014-2015 Haruki Hasegawa\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n        http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n\n---\n\n### License of dependent libraries\n\n#### cxxdasp, cxxporthelper, OpenSL ES CXX\n\nThese libraries are licensed under the [Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0).\n\n- [cxxdasp](https://github.com/h6ah4i/cxxdasp)\n- [cxxporthelper](https://github.com/h6ah4i/cxxporthelper)\n- [lockfreedatastructure](https://github.com/h6ah4i/lockfreedatastructure)\n- [OpenSL ES CXX](https://github.com/h6ah4i/openslescxx)\n\n\n#### PFFFT\n\nThis library is licensed under the [FFTPACK5 Software License](https://www2.cisl.ucar.edu/resources/legacy/fft5/license).\n\n- [PFFFT](https://bitbucket.org/jpommier/pffft)\n- [PFFFT (h6a h4i forked version)](https://bitbucket.org/h6a_h4i/pffft)\n\n\n#### Ne10\n\nThis library is licensed under the [BSD 3-Clause license](http://opensource.org/licenses/BSD-3-Clause).\n\n- [Ne10](http://projectne10.github.io/Ne10/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fh6ah4i%2Fandroid-openslmediaplayer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fh6ah4i%2Fandroid-openslmediaplayer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fh6ah4i%2Fandroid-openslmediaplayer/lists"}