2008-12-04 110 views
4

我有2個wav文件,我想用兩個音軌制作/合併/合併成一個文件。以C#合併WAV文件

是否有該任務或.NET可以我可以在索姆天才方式使用,使這個任務可能一些內置店命令的任何API?

非常感謝您的幫助。 :)

+0

你能不能澄清,要兩條軌道合併,這樣他們發揮同步,還是你想一個軌道追加到其他的結束? – RobS 2008-12-04 20:01:15

回答

3

如果我沒有弄錯,你可以將第二個文件中的字節追加到第一個文件的末尾。如果有任何標題數據,您需要排除該數據(請參閱here

請注意,您可能會聽到兩個剪輯之間的點擊或彈出,因爲沒有混合。你可以通過衰減來解決這個問題(逐漸減少最近幾ms的值到中心值)。

0

直截了當的方法是解釋wav文件頭,抽取樣本和交織來自兩個文件中的樣品放入你寫一個新的wav文件新的樣品流。您還可以通過樣本添加兩個源wav文件的樣本值,以將這兩個文件「混合」爲單個軌道。 wav文件格式並不複雜,所以編寫這段代碼不應該太困難。另外,還有很多包含代碼來讀寫wav文件的開源項目。 請注意,這兩個源wav文件有不同的採樣率有點棘手。 查詢this瞭解wav格式的說明。

2

如果您只需要這樣做一次,那麼最好的選擇是使用專門用於該任務的一些軟件。 Praataudacity將執行此操作(連接或合併兩個軌道)。

普瑞特也可以編寫腳本,以便有可能腳本普瑞特,然後調用普瑞特和從.NET應用程序中的腳本。

羅布

+0

嗡嗡聲:) 是的,我知道,問題是我有60個文件需要合併成15分鐘的文件。最有可能的是我必須不止一次地這樣做。 我已經看過sox和mancoder作爲你所說的一個例子,但他們似乎沒有把戲。 – suxSx 2008-12-05 06:57:55

4

對不起,我可能有點不清楚。我不想合併它們,所以它們同步播放。我想將曲目附加到對方的尾部,以便在同一個文件中彼此播放一首和一首。

但我想我在this線程中找到了答案。

它完美,它使用的技術前面提到喬恩乙

0

是的,你可以只添加第二個波形的數據(不包括其標題)作爲最高審計機關喬恩B,但你也必須修改的第一個文件,以表明新長度的頭,否則某些音頻播放器將停第一部分結束。

對於動態連接,因爲您不知道開始時總的wav的大小,所以您可以在第一個文件的標頭上放置假長度,例如放置10小時的持續時間。

然後,音頻播放器應該等待,直到您追加每個數據。它適用於ffmpeg的至少