2009-08-12 21 views
20

Java'da Braid yapıyorum. Zamanı geri sararsanız, ses geriye doğru oynatılır. WAV dosyası nasıl geriye doğru oynatılır? Belki de previous() gibi bir şeyle bir akışla? Örgü sitesinde, ne demek istediğimi anlayabilirsiniz.WAV dosyasını geri oynatın

Güncelleme: Çözüldü! Kendi mesajımı gör.

+3

+1 :-) Kayıp puanlarınız için – ChssPly76

+2

+1 :-) –

+0

teşekkür ederim. Bu lütuf bir hata oldu –

cevap

13

YEEEEEEESSSSS !!!!!!!! Sonra

import java.io.IOException; 
import javax.sound.sampled.AudioInputStream; 

/** 
* 
* @author Martijn 
*/ 
public class FrameBuffer { 

    private byte[][] frames; 
    private int frameSize; 

    public FrameBuffer(AudioInputStream stream) throws IOException { 
     readFrames(stream); 
    } 

    public byte[] getFrame(int i) { 
     return frames[i]; 
    } 

    public int numberFrames() 
    { 
     return frames.length; 
    } 

    public int frameSize() 
    { 
     return frameSize; 
    } 

    private void readFrames(AudioInputStream stream) throws IOException { 
     frameSize = stream.getFormat().getFrameSize(); 
     frames = new byte[stream.available()/frameSize][frameSize]; 
     int i = 0; 
     for (; i < frames.length; i++) 
     { 
      byte[] frame = new byte[frameSize]; 
      int numBytes = stream.read(frame, 0, frameSize); 
      if (numBytes == -1) 
      { 
       break; 
      } 
      frames[i] = frame; 
     } 
     System.out.println("FrameSize = " + frameSize); 
     System.out.println("Number frames = " + frames.length); 
     System.out.println("Number frames read = " + i); 
    } 
} 

Ve:

I (14 yaşında !!) Ben bu sınıfı yazdım
başıma çözüldü Ben Örgü seviyorum çünkü

FrameBuffer frameStream = new FrameBuffer(austream); //austream is the audiostream 
int frame = frameStream.numberFrames() - 1; 
while (frame >= 0) { 
     auline.write(frameStream.getFrame(frame), 0, frameStream.frameSize()); 
     frame--; 
} 
+0

@Martijn Courteaux harika :) – ant

+0

@Martijn Lütfen bu satırda aulinin ne olduğunu söyler misiniz ... "auline.write (frameStream.getFrame (frame), 0, frameStream.frameSize());" – Waqas

+1

Ses kartının ses kanalıdır. Bir 'SourceDataLine' örneğidir. Bu örneğe bir göz atın: http://www.anyexample.com/programming/java/java_play_wav_sound_file.xml –

2

WAV PCM içeriyorsa, PCM örneklerinin sırasını tersine çevirin. Başka bir format içeriyorsa, çok daha karmaşık olabilir; muhtemelen ilk önce PCM'ye dönüştürmek en kolay olanıdır.

WAV formatı hakkında daha fazla bilgi için, bkz. this site.

+0

Hızlı cevabınız için teşekkür ederiz. Ama bunu PCM'lerle nasıl yapacağımı bilmiyorum. Belki biraz bilgi bulabileceğimiz bir örnek mi yoksa bir site mi yazabilirsin? –

+1

WAV biçiminin açıklamasına bir bağlantı ekledim; Sorun yaşıyorsanız, sorun yaşadığınız kısımlarla ilgili belirli sorular sorun. – bdonlan

+0

Teşekkürler Bir şeyler deneyeceğim. Ve çok güzel bir site. –

2

Windows Ses Kayıt Cihazı'nı (Başlat -> Programlar -> Donatılar -> Eğlence) kullanın.

Bir .WAV dosyasını geri döndürmek için bir özelliği (Efektler (menü) -> Geri) vardır. Tersine çevrilmiş dosyayı farklı bir adla kaydedebilir ve ardından programınızda uygun olanı açabilirsiniz.

+0

, hepsini tersine çevirmek için birçok ses dosyasına (+50) sahipler. Hepimiz öyle düşündüm, ama ... –

İlgili konular