C++ 音频混合
Posted
技术标签:
【中文标题】C++ 音频混合【英文标题】:C++ audio mixing 【发布时间】:2012-09-22 20:57:50 【问题描述】:我希望能够将多个音轨合并到一个文件中,但不知道该怎么做。我需要能够做到以下几点:
我需要同时播放多个曲目,并且需要在不同点更改每个曲目的音量,
我需要一些曲目在不同的时间开始,
而且我需要能够将结果写入文件。
如果有人有有用的建议,我不确定要使用哪个库。
【问题讨论】:
将“C++ 音频库”打入您最喜欢的搜索引擎。 un4seen.com - 低音 || fmod.org - fmod 根据你想要的低级别,你可以自己使用,例如libvorbis
。混合音轨可以通过添加每个轨道的样本(每个通道)的值来完成,以获得最终的输出样本值。如果此值太大,则需要对其进行裁剪。
@DavidSchwartz 我当然看过,有很多库,它们看起来很复杂。我正在向以前使用过此类库的程序员寻求建议,而不仅仅是哪个库的 PageRank 最高。
我总是从头开始写这种东西,因为它并不复杂,学习一个新界面通常比仅仅敲出一百行代码更复杂。如果您不具备从头开始执行此操作的知识,那么最好的选择可能是 libSox。它可以满足您的要求,而且功能更多,但不会让您感到不知所措。
【参考方案1】:
没有人回答这个问题,所以我将发布我最终做了什么。我首先尝试使用 libffmpeg,但它太令人困惑而无法开始工作。所以我使用了libsndfile,它在 LGPL 下可用。这非常简单,但这意味着没有什么乱七八糟的东西可以玩弄。唯一的问题是它不能使用 MP3 格式,所以我只需以编程方式调用 ffmpeg.exe 并将 MP3 文件转换为 FLAC 并加载它们。它并不完美,但它会做到。
【讨论】:
嗨,@rlbond,我也和你的用例一样。你能解释一下你用什么函数来混合两个音频文件吗?以上是关于C++ 音频混合的主要内容,如果未能解决你的问题,请参考以下文章