【问题标题】:very need with simple sample Sound Visualisation非常需要简单的示例声音可视化
【发布时间】:2017-04-12 18:46:02
【问题描述】:

对 C++ 上的声音\音乐可视化简单示例代码(oscilogramm)有什么帮助吗?

是否可以在不注册 MFT DLL 的情况下像在 DShow\Scope 中那样实现它 - 简单的手动连接源可视化?

【问题讨论】:

  • 你能澄清一下你到底在问什么吗?我有点困惑。
  • 我有点困惑。 ²
  • 我询问了关于声音可视化的 c++ 的简单来源。我尝试了DShow,但是很难编写自己的过滤器并且需要注册dll。我在 Media Foundation 上编写了带有可视化功能的音乐播放器。

标签: visual-c++ visualization ms-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 毫秒的可用时间并从循环缓冲区进行渲染。
猜你喜欢
  • 2011-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-26
  • 2012-11-10
  • 2014-09-24
  • 2023-03-25
  • 1970-01-01
相关资源
最近更新 更多