非常需要简单的示例声音可视化
Posted
技术标签:
【中文标题】非常需要简单的示例声音可视化【英文标题】:very need with simple sample Sound Visualisation 【发布时间】:2017-04-12 18:46:02 【问题描述】:对 C++ 上的声音\音乐可视化简单示例代码(oscilogramm)有什么帮助吗?
是否可以在不注册 MFT DLL 的情况下像在 DShow\Scope 中那样实现它 - 简单的手动连接源可视化?
【问题讨论】:
你能澄清一下你到底在问什么吗?我有点困惑。 我有点困惑。 ² 我询问了关于声音可视化的 c++ 的简单来源。我尝试了DShow,但是很难编写自己的过滤器并且需要注册dll。我在 Media Foundation 上编写了带有可视化功能的音乐播放器。 【参考方案1】:您可以使用配置为接受音频样本(音频 IMFMediaType)的 Sample Grabber Sink。然后可以使用 DirectX、GDI 甚至简单的控件(如进度条)来可视化来自捕获的音频样本的数据。 检查此链接:https://msdn.microsoft.com/en-us/library/windows/desktop/hh184779(v=vs.85).aspx OnProcessSample 函数 printf 有关每个音频样本的一些信息。您可以将其用作可视化代码的起点。
【讨论】:
感谢 VuVirt,但我看到了您的链接:“注意 Source Reader 是 Sample Grabber Sink 的替代品,并且具有更简单的编程模型。”我现在试试 Source Reader。 你好 VuVirt!您认为如何从 MF 或 Sample Grabber Sink 每 20-100 毫秒获得一次声音状态? @Andrei 我认为您需要累积音频样本并缓冲它们,并根据您的需要每 20-100 毫秒处理一次缓冲区。 VuVirt!正如我所说,恕我直言,微软给样品起了错误的名字。在它总是 1-4 字节之前,但在 MF 中它是一大块音频数据。还是我错了?举个例子,如何获取关于到达非常小的音频数据的状态,至少 1-4 字节或 20-100 毫秒。 也许这个示例会对您有所帮助,但它是直接展示:msdn.microsoft.com/en-us/library/windows/desktop/…。您需要实现一个循环缓冲区并将样本数据推入其中,直到您有 100 毫秒的可用时间并从循环缓冲区进行渲染。以上是关于非常需要简单的示例声音可视化的主要内容,如果未能解决你的问题,请参考以下文章