在我的另一篇文章之后,我想知道是否可以对解码的音频数据包进行 MFCC 提取等处理。我使用的代码使用 ffmpeg 从 mpeg-2 文件中解码音频和视频。视频处理是使用 opencv 完成的,因为该库允许逐帧抓取。我需要同时处理相应的音频样本。
谢谢。
我创建了一个名为“Crosstalk”的 C++ 音频引擎。
尽管它被称为“音频引擎”,但它实际上只是一个实时 C++ 数据(浮点)处理引擎。串扰允许您在设计时和实时创建和路由系统。基本上,引擎负责所有数据路由,并为您提供一个简单的平台来创建处理数据的组件(例如,您的“音频输入”组件与“视频输入”组件并行连接)。只要您的分支具有相同的总缓冲区长度,它们就会完全同步。
它非常易于使用。以下是如何配置系统播放 mp3 文件的示例(此处使用的组件随引擎提供):
XtSystem system;
XtMp3Decoder mp3Decoder;
XtAudioDevice audioDevice;
long md = system.addComponent(&mp3Decoder);
long ad = system.addComponent(&audioDevice);
system.connOutToIn(md,0,ad,0);
system.connOutToIn(md,1,ad,1);
mp3Decoder.loadFile("../05 Tchaikovski-Swan Lake-Scene.mp3");
mp3Decoder.play();
您可以在此处查看 API 文档和许可详细信息:http: //www.adaptaudio.com/Crosstalk
编辑(01-12-2012):
Crosstalk 已被一个名为“ DSPatch ”的开源项目所取代。DSPatch 本质上是 Crosstalk 背后路由引擎的升级版本,不再局限于音频处理。DSPatch 允许您创建和路由几乎任何可以想象的类型的流程链,并且免费供个人和专有使用:)
我下载了你的图书馆,我正在玩它。您是否与其他 IPC 技术(如套接字/本地主机、消息队列、音频流的循环缓冲区)进行了某种性能比较?我正在开发一个软件应用程序,它接收多通道 UDP 流(128 个通道),对其子集执行 FFT,播放一个选定的通道,可视化 2 个通道的频谱和一个通道的频谱图。你认为 DSPatch 足够快来使用它吗?下载了你的库,我正在玩它。您是否与其他 IPC 技术(如套接字/本地主机、消息队列、音频流的循环缓冲区)进行了某种性能比较?我正在开发一个软件应用程序,它接收多通道 UDP 流(128 个通道),对其子集执行 FFT,播放一个选定的通道,可视化 2 个通道的频谱和一个通道的频谱图。你认为 DSPatch 速度够快吗?