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 @@
静音检测
修改音量
均衡器+
- 音乐均衡器
+ 音效
均衡器:
风格:
混响:
重低音:
声音增强:
+ 空灵
+ 搞笑
+ 惊悚
+ 萝莉
+ 大叔
音频处理
音视频处理