From 6dd2338a9bd89637be31f1299fc1da4d73e4107b Mon Sep 17 00:00:00 2001 From: xufuji456 <839789740@qq.com> Date: Fri, 13 Aug 2021 23:43:43 +0800 Subject: [PATCH] Add effect: echo funny tremolo --- .../ffmpeg/activity/EqualizerActivity.kt | 40 +++++++++++++++++++ .../main/res/layout/activity_equalizer.xml | 40 ++++++++++++++++++- app/src/main/res/values-en/strings.xml | 5 +++ app/src/main/res/values/strings.xml | 7 +++- 4 files changed, 90 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/frank/ffmpeg/activity/EqualizerActivity.kt b/app/src/main/java/com/frank/ffmpeg/activity/EqualizerActivity.kt index 75b9a87..a763f44 100644 --- a/app/src/main/java/com/frank/ffmpeg/activity/EqualizerActivity.kt +++ b/app/src/main/java/com/frank/ffmpeg/activity/EqualizerActivity.kt @@ -5,6 +5,8 @@ import android.os.Environment import android.util.Log import android.util.Pair import android.view.View +import android.widget.RadioButton +import android.widget.RadioGroup import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.frank.ffmpeg.AudioPlayer @@ -54,6 +56,18 @@ class EqualizerActivity : BaseActivity(), OnSeeBarListener { equalizerView.layoutManager = layoutManager equalizerAdapter = EqualizerAdapter(this, this) equalizerView.adapter = equalizerAdapter + + val effectEcho: RadioButton = findViewById(R.id.btn_effect_echo) + val effectFunny: RadioButton = findViewById(R.id.btn_effect_funny) + val effectTremolo: RadioButton = findViewById(R.id.btn_effect_tremolo) + val effectGroup: RadioGroup = findViewById(R.id.group_audio_effect) + effectGroup.setOnCheckedChangeListener { group, checkedId -> + when (checkedId) { + effectEcho.id -> doAudioEffect(0) + effectFunny.id -> doAudioEffect(1) + effectTremolo.id -> doAudioEffect(2) + } + } } private fun setupEqualizer() { @@ -98,6 +112,32 @@ class EqualizerActivity : BaseActivity(), OnSeeBarListener { } } + private fun getAudioEffect(index: Int) :String { + return when (index) { + 0 -> "aecho=0.8:0.8:1000:0.5" + 1 -> "atempo=2" + 2 -> "tremolo=5:0.9" + else -> { + "" + } + } + } + + private fun doAudioEffect(index: Int) { + var effect = getAudioEffect(index) + if (effect.isEmpty()) return + val filter = ",superequalizer=6b=4:8b=5:10b=5" + effect += filter + if (filterThread == null) { + filterThread = Thread(Runnable { + mAudioPlayer!!.play(audioPath, effect) + }) + filterThread!!.start() + } else { + mAudioPlayer!!.again(effect) + } + } + override fun onProgress(index: Int, progress: Int) { doEqualize(index, progress) } diff --git a/app/src/main/res/layout/activity_equalizer.xml b/app/src/main/res/layout/activity_equalizer.xml index 57f5c3b..c5cbd34 100644 --- a/app/src/main/res/layout/activity_equalizer.xml +++ b/app/src/main/res/layout/activity_equalizer.xml @@ -5,6 +5,42 @@ android:layout_marginStart="16dp" android:orientation="vertical"> + + + + + + + + + + + + + + android:layout_height="wrap_content" + android:layout_marginTop="5dp" + android:layout_marginBottom="50dp"> diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 569f41a..34d4d04 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -21,6 +21,11 @@ Audio reverb: Bass boost: Voice enhancer: + Ethereal + Funny + Tremolo + Lolita + Uncle Audio handle Media handle diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 318b4d8..02dea56 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -15,12 +15,17 @@ 静音检测 修改音量 均衡器+ - 音乐均衡器 + 音效 均衡器: 风格: 混响: 重低音: 声音增强: + 空灵 + 搞笑 + 惊悚 + 萝莉 + 大叔 音频处理 音视频处理