【问题标题】:how to show audio frequency in waveform?如何在波形中显示音频?
【发布时间】:2018-01-25 14:53:03
【问题描述】:

我想渲染显示音频频率数据的波形。

我有 150 点/秒的数据点。

我已经使用画布渲染它,显示每个数据值的线条。所以我在 1 秒的歌曲中显示 150 行,它以正确的方式显示,但是当我们滚动视图时,它会滞后。

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

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

如何在 OpenGL 或使用任何其他库中渲染此波,因为如果使用画布渲染,它会在滚动中滞后。

【问题讨论】:

    标签: android canvas opengl-es rendering waveform


    【解决方案1】:

    也许你可以举一个例子来说明它的样子。你如何创建线条?点是分散的吗?您必须连接它们还是有固定点?

    通常在 OpenGL-ES 中,该过程如下所示: - 读入您的音频数据 - 对它们进行排序,以便 OpenGL 知道如何连接它们 - 将它们上传到您的顶点着色器

    【讨论】:

    • 我已经用 wave 更新了这个问题。我怎样才能在 OpenGL 中制作这个波浪或类似的东西。
    【解决方案2】:

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

    1. 了解如何使用 OpenGL 设置窗口
    2. 您描述了一个二维应用程序 - 将 x 值定义为例如。 -75 至 75 - 将 y 值定义为您的数据
      • 将 Lines 定义为 x,y 数据集
    3. 用来画画

      glBegin(GL_Lines)

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

      glEnd();

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

    1. 定义您的 OpenGL 相机!

    【讨论】:

      猜你喜欢
      • 2016-12-09
      • 2011-03-26
      • 1970-01-01
      • 1970-01-01
      • 2022-11-06
      • 1970-01-01
      • 2012-07-12
      • 2018-12-03
      • 2020-07-09
      相关资源
      最近更新 更多