diff --git a/README.md b/README.md index c279ecf..a337c41 100644 --- a/README.md +++ b/README.md @@ -1 +1,84 @@ -# AudioTool +# AudioTool +![GitHub](https://img.shields.io/github/license/lincollincol/AudioTool?style=flat-square) +![GitHub release (latest by date)](https://img.shields.io/github/v/release/lincollincol/AudioTool?style=flat-square) +![GitHub All Releases](https://img.shields.io/github/downloads/lincollincol/AudioTool/total?color=%23ffaa&style=flat-square) + +![GitHub followers](https://img.shields.io/github/followers/lincollincol?style=social) +![GitHub stars](https://img.shields.io/github/stars/lincollincol/AudioTool?style=social) +![GitHub forks](https://img.shields.io/github/forks/lincollincol/AudioTool?style=social) + +AudioTool - an android library that provides useful audio processing functions. This library based on FFMPEG and uses mobile-ffmpeg library + +### AudioTool provide such functions: +* Filters (filter, bass, noise, vocal, noise) +* Effects (shifter, reverb, echo, reverse) +* Eq (bass, volume, normalize, pitch, speed) +* Modificators (cut, video 2 audio) +* other (waveform, duration, max levels, join, exec ffmpeg / ffprobe) + + +# Download +## Gradle +``` groovy +allprojects { + repositories { + maven { url 'https://jitpack.io' } + } +} +``` +``` groovy +dependencies { + implementation 'com.github.lincollincol:AudioTool:1.0' +} +``` + +## Maven +``` xml + + + jitpack.io + https://jitpack.io + + +``` +``` xml + + com.github.lincollincol + AudioTool + 1.0 + +``` +## Permissions +Add permissions to Manifest.xml file in your app and grant it, before using AudioTool +``` xml + + +``` + +## WARNING +### AudioTool process audio in the main thread ! You can run AudioTool functions with RxJava, Kotlin coroutines and Java Threads to process audio in the background therad. +AudioTool don't process audio in the background thread because of : + +* You can use your own approach to work in the background thread. It makes AudioTool library more flexible. +* Reduce library size. Third-party library uses a lot of space and AudioTool delegates this task to user. + +## Feedback +linc.apps.sup@gmail.com + +# License + +``` + Copyright 2020 lincollincol + + 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. +``` \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 3b2c3cb..c0a9b7c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -29,5 +29,4 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'androidx.appcompat:appcompat:1.2.0' -// implementation 'com.github.lincollincol:AudioTool:0.0.1' } diff --git a/app/src/main/java/linc/com/audiotool/MainActivity.java b/app/src/main/java/linc/com/audiotool/MainActivity.java index 4913bf5..97d4d1f 100644 --- a/app/src/main/java/linc/com/audiotool/MainActivity.java +++ b/app/src/main/java/linc/com/audiotool/MainActivity.java @@ -12,9 +12,7 @@ import java.util.List; import linc.com.library.AudioTool; -import linc.com.library.callback.OnFileComplete; import linc.com.library.callback.OnListComplete; -import linc.com.library.types.Echo; public class MainActivity extends AppCompatActivity { @@ -31,13 +29,8 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { try { AudioTool.getInstance(this) - .withAudio(new File("/storage/emulated/0/Music/kygo.mp3")) - .getMaxLevelData(1, "/storage/emulated/0/Music/bytes.txt", new OnListComplete() { - @Override - public void onComplete(List output) { - System.out.println(Arrays.toString(output.toArray())); - } - }) + .withAudio(new File("/storage/emulated/0/Music/Linc - AudioTool.mp3")) + /* calls */ .release(); } catch (Exception e) { e.printStackTrace(); diff --git a/img/audio_tool_logo.png b/img/audio_tool_logo.png new file mode 100644 index 0000000..4e5d2da Binary files /dev/null and b/img/audio_tool_logo.png differ diff --git a/library/src/main/java/linc/com/library/AudioTool.java b/library/src/main/java/linc/com/library/AudioTool.java index 3d0410f..6a748fe 100644 --- a/library/src/main/java/linc/com/library/AudioTool.java +++ b/library/src/main/java/linc/com/library/AudioTool.java @@ -461,6 +461,14 @@ public AudioTool executeFFmpeg(String command) { return this; } + /** + * @param command ffprobe command + */ + public AudioTool executeFFprobe(String command) { + FFprobe.execute(command); + return this; + } + private long getDurationMillis() { MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever(); mediaMetadataRetriever.setDataSource(audio.getAbsolutePath());