From ae08fa3cce837bca4482727f75f06ca9dace3508 Mon Sep 17 00:00:00 2001 From: xufuji456 <839789740@qq.com> Date: Fri, 11 Jun 2021 00:24:06 +0800 Subject: [PATCH] add audio denoise effect --- .../frank/ffmpeg/activity/AudioHandleActivity.kt | 8 +++++++- .../java/com/frank/ffmpeg/util/FFmpegUtil.java | 16 ++++++++++++++++ .../main/res/layout/activity_audio_handle.xml | 7 +++++++ app/src/main/res/values-en/strings.xml | 1 + app/src/main/res/values/strings.xml | 3 ++- 5 files changed, 33 insertions(+), 2 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 ac30485..f73437e 100644 --- a/app/src/main/java/com/frank/ffmpeg/activity/AudioHandleActivity.kt +++ b/app/src/main/java/com/frank/ffmpeg/activity/AudioHandleActivity.kt @@ -104,7 +104,8 @@ class AudioHandleActivity : BaseActivity() { R.id.btn_pcm_concat, R.id.btn_audio_speed, R.id.btn_audio_echo, - R.id.btn_audio_tremolo + R.id.btn_audio_tremolo, + R.id.btn_audio_denoise ) } @@ -235,6 +236,11 @@ class AudioHandleActivity : BaseActivity() { val tremoloPath = PATH + File.separator + "tremolo.mp3" commandLine = FFmpegUtil.audioTremolo(srcFile, frequency, depth, tremoloPath) } + R.id.btn_audio_denoise + -> { + val noisePath = PATH + File.separator + "denoise.mp3" + commandLine = FFmpegUtil.audioDenoise(srcFile, noisePath) + } 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 9303013..0015ee2 100644 --- a/app/src/main/java/com/frank/ffmpeg/util/FFmpegUtil.java +++ b/app/src/main/java/com/frank/ffmpeg/util/FFmpegUtil.java @@ -120,6 +120,22 @@ public class FFmpegUtil { return tremoloCmd.split(" "); } + /** + * Denoise audio samples with FFT + * + * @param inputPath input file + * @param outputPath output file + * @return mix success or not + */ + public static String[] audioDenoise(String inputPath, String outputPath) { + // nr: noise reduction in dB, [0.01 to 97], Default value is 12 dB + // nf: noise floor in dB, [-80 to -20], Default value is -50 dB + // nt: noise type {w:white noise v:vinyl noise s:shellac noise} + String fftDenoiseCmd = "ffmpeg -i %s -af afftdn %s"; + fftDenoiseCmd = String.format(Locale.getDefault(), fftDenoiseCmd, inputPath, outputPath); + return fftDenoiseCmd.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 32dfabe..003861c 100644 --- a/app/src/main/res/layout/activity_audio_handle.xml +++ b/app/src/main/res/layout/activity_audio_handle.xml @@ -90,6 +90,13 @@ android:text="@string/audio_tremolo" android:layout_marginTop="10dp" /> +