android - 带有Android Media Player的DSP(数字声音处理)

标签 android audio media-player android-mediaplayer

我有一个应用程序可以播放服务器中的音乐(mp3),创建播放列表等。

问题是某些歌曲的声音/音量/分贝高于或低于其他歌曲...因此,我正在寻找一种在播放音乐时在我的应用程序中实现DSP(数字声音处理)的方法。我需要一个声音压缩器,如果它超过阈值,它会降低db输出;如果它低于某个阈值,则它会增加db输出。

有谁知道如何做到这一点???我在Google Play上找到了一些DSP应用,因此可以实现,但是如何实现呢?

我找到了一个可能的解决方案“Automatic Gain Control”,该解决方案实际上应该执行此操作,但是在我阅读时,它的意思是在录制时输入INPUT声音,而不是像播放服务器中的歌曲那样输出OUTPUT!

有什么想法,建议和例子吗?

谢谢

最佳答案

从Android KitKat开始,内置了LoudnessEnhancer效果。它将压缩声音,否则将以指定的增益设置进行裁剪。参见the docs,这是an example

可能,您正在寻找的解决方案称为"Replay Gain",它使用嵌入mp3文件中的标签来匹配所产生的声音级别。因此,您的播放器可以降低比所需声音大的音轨的增益,并增加无声音轨的增益。有了LoudnessEnhancer,您就不会遇到削波的情况。因此,您实际上不需要自己实现任何DSP代码。

关于android - 带有Android Media Player的DSP(数字声音处理),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37046343/

相关文章:

java - 如何在嵌入的网络浏览器中从 URL 播放 .wav 文件 - Java

javascript - 如何在 javascript 中播放超声波 WAV/PCM 文件而不丢失数据

android - 如何恢复媒体播放器?

java - Android 应用程序强制关闭 SD 卡音频加载

android - 无法在Android Studio中同步gradle 3.1项目:

API 23/24 中的 Android OnClick 事件监听器更改

java - java 中 Kotlin 中 <?,?> 的等价物是什么?

android - 我可以在哪些用途中找到 SharedActivityContext?

audio - 识别 "ding-dong"声音

c# - 如何检测另一个音频是否在后台播放? ( window 电话 7)