处理用ffmpeg解码的音频数据包

时间:2012-02-25 12:58:24

标签: c++ audio opencv ffmpeg htk

在我的另一个post之后,如果有可能对解码后的音频数据包进行MFCC提取等过程,那么我很有兴趣。我使用的代码使用ffmpeg解码来自mpeg-2文件的音频和视频。使用opencv完成视频处理,因为此库允许一帧地抓取帧。我需要在同一时间处理相应的音频样本。

感谢。

1 个答案:

答案 0 :(得分:2)

我创建了一个名为“Crosstalk”的C ++音频引擎。

虽然它被称为“音频引擎”,但它实际上只是一个实时C ++数据(浮点)处理引擎。 Crosstalk允许您在设计时和实时创建和路由系统。基本上,引擎负责所有数据路由,并为您提供了一个简单的平台,用于创建处理数据的组件(例如,您的“音频源”组件与“视频源”组件并行连接)。只要您的分支具有相等的总缓冲区长度,它们就会完美同步。

它非常易于使用。以下是如何配置系统播放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允许您创建和路由几乎任何类型的可想象的流程链,并且可以免费用于个人和专有用途:)