如何在波形中显示音频?

时间:2018-01-25 14:53:03

标签: android canvas opengl-es rendering waveform

我想呈现显示音频频率数据的波形。

我的数据点为150点/秒。

我使用canvas渲染它,显示每个数据值的行。所以我用1秒的歌曲显示150行,它以正确的方式显示,但是当我们滚动视图时,它的滞后。

是否有任何库可以使用openGL,canvas或使用滚动时平滑的任何其他方法呈现数据点。

These are two waves。每行代表一个数据点,最小值为零,最大值将是数据集中的最高值。

如何在OpenGL中渲染此wave或使用任何其他库,因为如果使用canvas渲染,它在Scrolling中会滞后。

2 个答案:

答案 0 :(得分:0)

也许你可以展示它的样子。你是如何创建线条的?积分分散了吗?你需要连接它们还是有固定点?

通常在OpenGL-ES中,过程如下: - 读入您的音频数据 - 对它们进行排序,以便OpenGL知道如何连接它们 - 将它们上传到你的vertexShader

答案 1 :(得分:0)

我真的会推荐this教程。我不知道你的OpenGL背景,因此这是启动它的完美工具。 实际上,您的应用程序不应该太复杂,教程应该为您提供足够的信息。在这种情况下,您希望用150点可视化每一秒 只是一个小概述

  1. 了解如何使用OpenGL设置窗口
  2. 您描述了一个2d应用程序 - 例如定义x值。 -75到75 - 将y值定义为您的数据
    • 将Lines定义为x,y dataSet
  3. 用于绘制

    在glBegin(GL_LINES)

    glVertexf((float)x每行的值,(float)y每行的小值); glVertexf((float)x每行的值,(float)y每行的高值);

    glEnd();

  4. 如果必须使用移动图形,则需要着色器,因为OpenGLES仅支持GLSL中的着色器

    1. 定义您的OpenGL相机!