From d7525073a7b9f273c488fa182ac6a73623f47f51 Mon Sep 17 00:00:00 2001 From: xufuji456 <839789740@qq.com> Date: Wed, 9 Jun 2021 23:28:03 +0800 Subject: [PATCH] add the tremolo effect --- .../ffmpeg/activity/AudioHandleActivity.kt | 12 ++++++++++-- .../java/com/frank/ffmpeg/util/FFmpegUtil.java | 17 +++++++++++++++++ .../main/res/layout/activity_audio_handle.xml | 10 +++++++++- app/src/main/res/values-en/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 5 files changed, 38 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/frank/ffmpeg/activity/AudioHandleActivity.kt b/app/src/main/java/com/frank/ffmpeg/activity/AudioHandleActivity.kt index d49ceef..ac30485 100644 --- a/app/src/main/java/com/frank/ffmpeg/activity/AudioHandleActivity.kt +++ b/app/src/main/java/com/frank/ffmpeg/activity/AudioHandleActivity.kt @@ -103,7 +103,8 @@ class AudioHandleActivity : BaseActivity() { R.id.btn_audio_encode, R.id.btn_pcm_concat, R.id.btn_audio_speed, - R.id.btn_audio_echo + R.id.btn_audio_echo, + R.id.btn_audio_tremolo ) } @@ -221,12 +222,19 @@ class AudioHandleActivity : BaseActivity() { val speedPath = PATH + File.separator + "speed.mp3" commandLine = FFmpegUtil.changeAudioSpeed(srcFile, speedPath, speed) } - R.id.btn_audio_echo//setting echo effect + R.id.btn_audio_echo // setting echo effect -> { val echo = 1000 // echo effect, range from 0 to 90000 val echoPath = PATH + File.separator + "echo.mp3" commandLine = FFmpegUtil.audioEcho(srcFile, echo, echoPath) } + R.id.btn_audio_tremolo //tremolo effect + -> { + val frequency = 5 // range from 0.1 to 20000.0 + val depth = 0.9f // range from 0 to 1 + val tremoloPath = PATH + File.separator + "tremolo.mp3" + commandLine = FFmpegUtil.audioTremolo(srcFile, frequency, depth, tremoloPath) + } else -> { } } diff --git a/app/src/main/java/com/frank/ffmpeg/util/FFmpegUtil.java b/app/src/main/java/com/frank/ffmpeg/util/FFmpegUtil.java index eb1b8f4..9303013 100644 --- a/app/src/main/java/com/frank/ffmpeg/util/FFmpegUtil.java +++ b/app/src/main/java/com/frank/ffmpeg/util/FFmpegUtil.java @@ -103,6 +103,23 @@ public class FFmpegUtil { return echoCmd.split(" "); } + /** + * Set tremolo effect, sinusoidal amplitude modulation + * + * @param inputPath input file + * @param frequency frequency + * @param depth depth + * @param outputPath output file + * @return mix success or not + */ + public static String[] audioTremolo(String inputPath, int frequency, float depth, String outputPath) { + // frequency [0.1, 20000.0], Default is 5 + // depth (0, 1], Default is 0.5 + String tremoloCmd = "ffmpeg -i %s -af tremolo=%d:%f %s"; + tremoloCmd = String.format(Locale.getDefault(), tremoloCmd, inputPath, frequency, depth, outputPath); + return tremoloCmd.split(" "); + } + /** * mux audio and video together * diff --git a/app/src/main/res/layout/activity_audio_handle.xml b/app/src/main/res/layout/activity_audio_handle.xml index 962b4f9..32dfabe 100644 --- a/app/src/main/res/layout/activity_audio_handle.xml +++ b/app/src/main/res/layout/activity_audio_handle.xml @@ -58,7 +58,8 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/audio_encode" - android:layout_marginTop="10dp" /> + android:layout_marginTop="10dp" + android:visibility="gone"/>