2013-06-21 42 views
0

我一直在生成動態音頻循環剪輯 並更新它的緩衝區。Java 7更新25:動態音頻不再在本地小程序中工作。有沒有其他方法?

隨着Java更新7 25(2013年6月18日),該剪輯不再播放 對其緩衝區所做的更改,但僅循環其原始內容。 在下面的片段中,如果測試== 0,則播放白噪聲,但如果 測試== 1則播放白噪聲。它曾經以兩種方式播放噪音,並且在作爲控制檯應用程序而不是本地小程序運行 時仍然會發揮作用。

我真的需要在剪輯打開後更新緩衝區:幾個 軟件突然無聲。有沒有其他(或正確的)方式來做到這一點?提前致謝。

AudioFormat.Encoding enc = new AudioFormat.Encoding("PCM_SIGNED"); 

    AudioFormat frmt = new AudioFormat(enc, 22050, 16, 2, 4, 22050, false); 

    DataLine.Info info = new DataLine.Info(Clip.class, frmt); 

    Clip loop_clip; 

    int size = 8192; 

    byte[] sound_buf = new byte[size]; 

    for (int i = 0; i < size; i++) 
     sound_buf[i] = 0; 

    int test = 1; 

    if (test == 0) 
     for (int i = 0; i < size; i++) 
      sound_buf[i] = (byte) (Math.random() * 256); 

    try { 
     loop_clip = (Clip) AudioSystem.getLine(info); 

     loop_clip.open(frmt, sound_buf, 0, size); 

    } catch (LineUnavailableException e) { 
     e.printStackTrace(); 
     return; 
    } 

    if (test == 1) 
     for (int i = 0; i < size; i++) 
      sound_buf[i] = (byte) (Math.random() * 256); 

    loop_clip.setLoopPoints(0, -1); 

    loop_clip.loop(999); 
+0

這是我在過去幾個小時中看到的第二個問題,提到u25的多媒體問題:/什麼操作系統? – fge

+0

to @fge:Win 7 32 bit – Brad

+0

爲了儘快提供更好的幫助,請發佈[SSCCE](http://sscce.org/)。 –

回答

0

我沒有找到一個解決方案,使剪輯緩存訪問的夾子打開後,但我模擬使用的SourceDataLine和飼料緩衝剪輯。它肯定會佔用更多的CPU,但至少可以在本地小程序中進行測試。

相關問題