Avatar billede bentblod Nybegynder
13. januar 2005 - 15:32 Der er 19 kommentarer og
1 løsning

Lyde i java

Nogen der gider lave noget kode til hvordan man kan bruge en lyd i java? Evt. hvis i også gider skrive hvilke forskellige lydformater man kan bruge i java?
Avatar billede simonvalter Praktikant
13. januar 2005 - 15:47 #1
kig engang på http://java.sun.com/products/java-media/sound/index.jsp
og
http://java.sun.com/products/java-media/jmf/index.jsp

jeg har ikke noget kode liggende men der er links til artikler og kode eksempler på siderne.
Avatar billede bentblod Nybegynder
13. januar 2005 - 16:01 #2
ok thx kigger lige på dem
Avatar billede bentblod Nybegynder
13. januar 2005 - 16:17 #3
Hmm det eneste jeg kom frem til var at der var noget der hed javaMp3, men har ingen anelse om hvordan jeg skal bruge det. Nogen der har et eksempel på det så?
Avatar billede simonvalter Praktikant
13. januar 2005 - 17:36 #4
det eneste du skal med javamp3 er at instalere jmf og javamp3 pluginet og så bruger du det f.eks med:

  Player player = Manager.createPlayer(new File("fil.mp3").toURL() );
  player.start();

du kan læse mere om det her
http://java.sun.com/products/java-media/jmf/2.1.1/guide/JMFTOC.html
Avatar billede bentblod Nybegynder
13. januar 2005 - 19:05 #5
Har installeret det men, hvad er det jeg skal importe før jeg kan bruge det?
Avatar billede simonvalter Praktikant
13. januar 2005 - 19:08 #6
import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.media.Player;
import java.io.IOException;
import java.io.File;

men kan din IDE ikke klare det for dig ?
Avatar billede simonvalter Praktikant
13. januar 2005 - 19:11 #7
installeren smider det vist i <jre>/lib/ext
og da din IDE fik tilføjet j2sdk der tilføjede den også de jar der lå der.
jeg vil tro at du skal tilføje de nye jar du har fået instaleret for at de er i din classpath.
Avatar billede fritz-79th Nybegynder
13. januar 2005 - 21:47 #8
Et andet godt link
http://www.jsresources.org/
Avatar billede bentblod Nybegynder
14. januar 2005 - 20:43 #9
Ok mange tak har fået det til at virke nu. Er så endnu et problem... Hvis jeg laver mit program til en exe fil, brokker den sig over at den ikke kan finde ud af at kører mp3 filer. Nogen der ved hvordan jeg håndterer det problem?? Jeg bruger jBuilder 9...
Avatar billede simonvalter Praktikant
14. januar 2005 - 20:50 #10
jeg går ud fra at både javamp3 pluginet og jmf er instaleret på maskinen hvor exe filen bliver afviklet... hvis det er tilfældet ved jeg desværre ikke hvad det kan være.

du kunne også bare holde dig til en executable jar... måske med et .bat script i tilfælde af at jar ikke er registreret til javaw.exe
Avatar billede simonvalter Praktikant
14. januar 2005 - 20:50 #11
og et svar
Avatar billede bentblod Nybegynder
14. januar 2005 - 21:01 #12
begge dele er installeret på den maskine, men det virker stadig ikke :/
Avatar billede bentblod Nybegynder
14. januar 2005 - 21:44 #13
men... Gør det da heller ikke særlig brugbart hvis det skal installeres på andre computere hvor det skal bruges... Men ifølge hvad jeg kan se ligger den alle de filer fra jmf 2.1 ned i jar filen. Den melder bare fejl når en lyd bliver spillet..
Fejlmeddellelse:

Unable to handle format: mpeglayer3, 44100.0 Hz, 16-bit, stereo, LittleEndian, signed, 16000.0 frame rate, FrameSize=32768 bits
Failed to realize: com.sun.media.PlaybackEngine@126f827
Error: Unable to realize com.sun.media.PlaybackEngine@126f827
Avatar billede simonvalter Praktikant
14. januar 2005 - 21:57 #14
det der ser ud som om at mp3 pluginet ikke er registereret.

installeren registerer for dig og så burde det virke... men hvis du ikke bruger installeren men vedlægger jmf+plugin som jar så skal du selv registere plugin til jmf

siden siger man skal køre  "java com.sun.media.codec.audio.mp3.JavaDecoder"
.. jeg prøvede selv at gøre det igår ved først at hente en jar men den sagde bare den var registereret og så smed den en fejl.. og det fik det ikke til at virke.

jeg læste et sted at det kunne være man selv skulle køre jmfregistry i bin mappen og registere det manuelt... men det burde nu virke uden.
Avatar billede bentblod Nybegynder
15. januar 2005 - 04:19 #15
Hmm ok, men må du meget gerne skrive hvis du finder ud af det. For er jo rimelig brugbart :)
Avatar billede simonvalter Praktikant
15. januar 2005 - 13:26 #16
http://weblogs.java.net/blog/jonathansimon/archive/2004/11/suns_mp3_plugin.html

læs hvad de skriver der..

du vil muligvis få det nemmere hvis du benytter et af de codec's som er supported i jmf i forvejen.
Avatar billede bentblod Nybegynder
17. januar 2005 - 22:35 #17
Hmm, dvs. man kan ikke bruge mp3 i java kom jeg frem til. Hvordan får jeg så lyd på? sådan som jeg har det nu, tar lyden mega meget hukommelse + at den ikke kan finde ud af at spille flere ting samtidig + der kommer delay. Hvilket suxx rimelig meget når det er et spil jeg er igang med. Hvad ville du da gøre?
Avatar billede simonvalter Praktikant
17. januar 2005 - 22:58 #18
Tror jeg ville bruge Java Sound API med .wav .. det burde være forholdsvis let at gå til.

hvad er din email?
Avatar billede bentblod Nybegynder
18. januar 2005 - 00:12 #19
bentblod@mail.tele.dk

er på msn hvis det er.

Den kode som jeg bruger nu er:

import java.io.File;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.SourceDataLine;

/**
* Play a *.wav or *.au file.
*
* @author Knute Johnson
*/
public class Play {
  /**
  * Play a *.wav or *.au file
  *
  * @param args args[0] on command line is name of file to play
  */


  public static void main(String[] args) {
    try {
      AudioInputStream ais =
          AudioSystem.getAudioInputStream(new File("tank1.wav"));
      AudioFormat af = ais.getFormat();
      DataLine.Info info = new
          DataLine.Info(SourceDataLine.class, af);

      if (!AudioSystem.isLineSupported(info)) {
        System.out.println("unsupported line");
      }
      else {

        int frameRate = (int) af.getFrameRate();
        System.out.println("Frame Rate: " + frameRate);
        int frameSize = af.getFrameSize();
        System.out.println("Frame Size: " + frameSize);
        int bufSize = frameRate * frameSize / 10;
        System.out.println("Buffer Size: " + bufSize);

        SourceDataLine line = (SourceDataLine)
            AudioSystem.getLine(info);
        line.open(af, bufSize);
        line.start();
        byte[] data = new byte[bufSize];
        int bytesRead;

        while ( (bytesRead = ais.read(data, 0, data.length)) != -1)
          line.write(data, 0, bytesRead);

        line.drain();
        line.stop();
        line.close();
      }
    }
    catch (Exception e) {
      System.out.println(e.toString());
    }
    System.exit(0);
  }
}
Avatar billede simonvalter Praktikant
18. april 2005 - 21:26 #20
lukketid?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester