最近项目中需要实时获取播放音频的频率,并绘制波形图,用到了Visualizer这个类,记录下其使用方法:
Visualizer.OnDataCaptureListener有两个回调方法,分别是onFftDataCapture和onWaveFormDataCapture,onFftDataCapture返回的是经过傅里叶变换处理后的音频数据,onWaveFormDataCapture返回的是声音的波形数据。
计算声音分贝部分代码:
val readyData = readyData(fft)
val interval = readyData.size / (lineCount * 2)
for (i in readyData.indices step interval) {
val magnitude = readyData[i] * readyData[i] + readyData[i + 1] * readyData[i + 1] * 1.0
val dbValue = (10 * log10(magnitude)).toLong().coerceAtLeast(0)
private fun readyData(fft: ByteArray): ByteArray {
val newData = ByteArray(256)
for (i in 0 until fft.size.coerceAtMost(256)) {
newData[i] = abs(fft[i].toInt()).toByte()
return newData
Visualizer的使用:
class VisualizerHelper {
private var visualizer: Visualizer? = null
private var mediaPlayer: MediaPlayer? = null
* 播放音乐
fun playMusic(
path: String,
onCompletionListener: MediaPlayer.OnCompletionListener,
onDataCaptureListener: Visualizer.OnDataCaptureListener
mediaPlayer = MediaPlayer().apply {
setDataSource(path)
setOnCompletionListener {
onCompletionListener.onCompletion(it)
release()
releaseVisualizer()
mediaPlayer = null
mediaPlayer?.prepare()
mediaPlayer?.start()
initVisualizer(onDataCaptureListener)
* 停止播放
fun stopMusic() {
mediaPlayer?.run {
stop()
release()
mediaPlayer = null
releaseVisualizer()
* 获取当前播放进度
fun getCurrentPosition(): Long {
return (mediaPlayer?.currentPosition ?: 0) / 1000L
private fun initVisualizer(
dataCaptureListener: Visualizer.OnDataCaptureListener
if (visualizer != null) {
visualizer?.enabled = true
return
visualizer = Visualizer(mediaPlayer?.audioSessionId ?: 0)
visualizer?.run {
captureSize = Visualizer.getCaptureSizeRange()[1]
setDataCaptureListener(
dataCaptureListener,
Visualizer.getMaxCaptureRate() / 2,
false,
enabled = true
private fun releaseVisualizer() {
visualizer?.run {
enabled = false
release()
visualizer = null
最近项目中需要实时获取播放音频的频率,并绘制波形图,用到了Visualizer这个类,记录下其使用方法:Visualizer.OnDataCaptureListener有两个回调方法,分别是onFftDataCapture和onWaveFormDataCapture,onFftDataCapture返回的是经过傅里叶变换处理后的音频数据,onWaveFormDataCapture返回的是声音的波形数据。计算声音分贝部分代码:val readyData = readyData(fft)val inte
Android Visualizer
一个View子类,它从Android MediaPlayer接收输入并显示可视化效果,例如iTunes或WinAmp
Visualizer设计为模块化的,因此很容易组合可视化以创建更复杂的效果。
创建自己的自定义可视化或合并/编辑现有可视化很容易。 以下是一些示例:
一对频率分布。
这是一个使用FFT数据而不是原始音频波形的示例
在屏幕上绘制音频波形,以突出的节奏跳动
将音频波形画成一个圆圈,半径随时间变化
组合可视化
以上所有的组合
根据发行。
安卓可视化工具
一个 View 子类,它从 Android MediaPlayer 获取输入并显示可视化,如在 iTunes 或 WinAmp 中
Visualizer 设计为模块化,因此很容易组合可视化以创建更复杂的效果。
创建您自己的自定义可视化或组合/编辑现有可视化很容易。 下面是几个例子:
一对频率分布。
这是一个使用 FFT 数据而不是原始音频波形的示例
线条可视化
在屏幕上绘制音频波形,以突出的节拍脉动
圆形可视化
以圆形绘制音频波形,半径随时间变化
组合可视化
以上所有的组合
Library is available in jcenter repository
How to use
Refer to the sample project on how to use visualizer or refer to WIKI docs.
Visualizers
LineVisualizer
BarVisualizer
CircleVisualizer
Circle Bar Visualizer
Line Bar Visualizer
License
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance
Android 实时
获取播放音乐的
频率 Visualizer用法
笔者正在做的项目有
播放声音并实时
获取声音
音频的需求,在网上搜了许久,都找不到一个满意的答案。于是自己去翻了谷歌文档和请教自己固件的同事,整理出来一套供大家参考
Visualizer 的用法
//声明MediaPlayer
mMediaPlayer = new MediaPlayer();
//声明
Visualizer
Android Visualizer
一个View子类,它从Android MediaPlayer接收输入并显示可视化效果,例如iTunes或WinAmp
Visualizer设计为模块化的,因此很容易组合可视化以创建更复杂的效果。
创建自己的自定义可视化或合并/编辑现有可视化很容易。 以下是一些示例:
一对频率分布。
这是一个使用FFT数据而不是原始音频波形的示例
在屏幕上绘制音频波形,以突出的节奏跳动
将音频波形画成一个圆圈,半径随时间变化
组合可视化
以上所有的组合
根据发行。
该应用程序将
使用您的设备麦克风来
获取所听到的声音,以数字方式对
音频进行采样,并以多种
频率呈现有趣的
音频信号视觉表示。
说明在页面加载时,它会询问您是否允许
使用设备的麦克风...。单击“是”!
您可以停留在主页上并
使用默认的
Visualizer,或者注册并登录以
获取更多选项。
登录/注册后:
点击“选择视觉”下拉菜单
选择新的展示台
最后单击“可视化”以显示新的视觉效果
使用的技术
HTML,CSS,Skeleton,SVG,Javascript,D3,Ruby(Some Rails技术),Sinatra和Postgresql。
输入
音频URL,以通过应用程序
播放歌曲。
正弦波发生器
更多展示台!!
Google Cardboard Audio Visualizer
使用 Google 的 Cardboard SDK 在 Unity 中进行的非常基本的 VR 演示。 该项目接受输入音频文件(最好是 48kHz 立体声 MP3)并根据频率幅度的实时音频分析显示音乐的 3D 可视化。
连接 Android 设备后,从终端运行adb devices以验证您的设备是否已连接调试模式
运行adb install -r SingleStadium.apk来安装和运行基本的纸板场景。 您还可以运行adb install -r MultiStadium.apk来查看摄像机周围有 4 个音乐可视化器的场景。
###从源代码构建
在 Unity 中打开 MultiStadium 或 SingleStadium 场景
按 Ctrl+P (⌘ + P) 在编辑器中播放。 Alt 处理俯仰和偏航,
Xamarin.Forms学习之路——AudioVisualizer踩坑提示关键实现Android.AudioVisualizerImplementation.csEMAudioVisualizer_IAudioVisualizer.cs细节实现Android.MainActivity.cs最重要的细节调用
由于项目需要,最近在搞音乐可视化的内容,既然安卓有AudioVisualizer,就不需...
SuperCoderLei: