簡體   English   中英

如何錄制javasound應用程序當前正在播放的聲音?

[英]How can I record the sound that a javasound application is currently playing?

我有兩個wav文件,我想模擬在3D空間中不同點的生成,就像從矩形4通道麥克風陣列聽到的那樣。 也就是說,理想的輸出將是單個4通道wav文件或4個已知已同步的單通道wav文件。

我目前的方法並不是很好,但是原則上可以。 我在jReality模擬中從它們的位置播放了這兩種聲音(之所以選擇它們,僅僅是因為我已經有了jReality模擬的方便)。 這樣做有兩個問題:A)jReality僅支持單個麥克風位置,B)它直接從jReality到javasound,然后從我的揚聲器發出。 要解決A,我應該能夠放置麥克風,進行錄音,移動麥克風並重復。 不幸的是,我不知道如何解決B,我知道錄制必須來自我的Java代碼中,因為這是同步它的唯一方法。

所以問題是雙重的,首先,有沒有更好的方法來模擬音頻混合和衰減? 其次,有沒有辦法攔截已經發送到javasound的東西並將它們存儲到文件中?

完全有可能從四個源(AudioInputLines)中讀取並在“每幀”級別對其進行處理。 通常,編碼器有一個while循環,用於讀取傳入的音頻數據。 讀取每個緩沖區(對於四個源,您將有四個緩沖區),您將解碼傳入的字節為聲音數據,應用混合算法,然后根據音頻格式將結果重新轉換為字節。

如果將以上內容包裝在TargetDataLine中,則可以記錄下來。

Java Sound Tutorials以一種“大圖”方式涵蓋了這一點,但是如果您以前沒有遇到過主要概念(使用javax.sound.sampled庫),那么值得一看。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM