2013-01-06 77 views
0

我想在Windows上使用LibSoX混合兩個wav文件。我可以使用下面的命令使用SOX在命令行中執行此操作:如何使用LibSoX混合兩個wav文件

襪-m f1.wav f2.wav out.wav

不過,我想這樣做編程方式使用C/C++函數並與LibSoX鏈接。我已經成功構建了LibSoX,並試用了不包含兩個音頻文件「混合」的示例程序。

有人這樣做過嗎?如果你能給出一個代碼片段或至少一些指針來使用LibSoX調用來做到這一點會很好。

+0

檢查sox實用程序的源代碼:-)您可以在這裏在線瀏覽資源:http://sox.git.sourceforge.net/git/gitweb.cgi?p=sox/sox;a=tree –

+0

@NikosC。擁有代碼並構建了LibSox.lib,但一切都非常緊密。我想知道是否可以使用導出的LibSoX調用 – stamhaney

+0

它看起來不是。它只是將樣本加在一起(sox.c,第572行)。它通過首先強制轉換爲「double」來防止溢出。 –

回答

1

想要分享我爲上述問題所做的解決方案(解決方法)。基本上,混音不會作爲導出的函數調用暴露。混合可以通過命令行來完成,所以可以有兩種解決方案:1)通過程序產生一個進程(sox.exe),2)通過libsox。我需要一個基於libsox的解決方案作爲將要調用混合函數的函數,無法產生一個進程(約束)。所以我將主要的功能從sox移到了我導出的libsox中的一個新方法:)。所以現在我可以將相同的命令行開關傳遞給我的函數,並使用libsox完成工作!這將是一個理想的「解決方法」,直到Chris Bagwell從libsox公開混合(和其他缺失)功能。

+0

如果你可以告訴我們在libsox中的混音程序在哪裏,會很酷。 –

+0

混合功能不存在於任何一種功能中。使用多個功能,並且有時爲多個選項使用相同的功能。混合功能存在於由設置combine_method = sox_mix的-m選項引用的代碼中 – stamhaney