Avatar billede ng-km Nybegynder
27. november 2002 - 23:58 Der er 3 kommentarer og
1 løsning

Afspil lyd i Java

Jeg skal have afspillet en lyd-fil ved et tryk på en knap i min applikation. Hvordan kan det gøres?

Umiddelbart har jeg i Suns dokumentation fået opfattelsen af at det skal foregå igennem en applet. Kan det gøres rimeligt nemt og måske UDEN en applet?
Avatar billede quisifa Nybegynder
28. november 2002 - 03:33 #1
Avatar billede christian-petersen Nybegynder
28. november 2002 - 08:59 #2
Du kan sagtens gøre det uden en applet. Lidt afhængigt af hvilken slags lyd skal du afspille, er der flere muligheder. Hvis du skal afspille midi og wave kan du bruge javax.sound api'et der følger med i J2SE. Dette kan også udvides, men skal du lave mere avancerede ting (f.eks. streaming via rtsp) skal du kigge på java media framework (JMF). Men dette kan godt virke en anelse komplekst, så hvis ikke du har brug for de avancerede muligheder heri, vil jeg råde dig til at starte med javax.sound.

Se iøvrigt http://www.jsresources.org/
Avatar billede carstenknudsen Nybegynder
28. november 2002 - 10:32 #3
Det er ret let at afspille lyd, som eksemplet herunder viser:
import javax.sound.midi.*;
import java.io.*;
public class Sound {
    public static void main(String[] args ) {
    try {
        // From file
        Sequence sequence = MidiSystem.getSequence(new File("heigh-ho.mid"));
        // Create a sequencer for the sequence
        Sequencer sequencer = MidiSystem.getSequencer();
        sequencer.open();
        sequencer.setSequence(sequence);
        // Start playing
        sequencer.start();
        //} catch (MalformedURLException e) {
    } catch (IOException e) {
    } catch (MidiUnavailableException e) {
    } catch (InvalidMidiDataException e) {
    }
}
}
~
Avatar billede ng-km Nybegynder
30. november 2002 - 00:02 #4
quisifa: Denne kode låser mit lydkort fast så jeg skal reboote for at få gang i det igen.

christian-petersen: Jeg får fejl i mine import-statements med denne kode, muligvis fordi jeg bruger SDK der er begrænset i forhold til de imports der skal bruges. Det virker ikke.

carstenknudsen: der kan kun afspilles midi-filer i denne kode, det er selvfølgelig min fejl at jeg ikke nævnte at jeg skal afspille wav-filer. Men koden virker og derfor får du dine point.

Min egen løsning som jeg bruger (med Applet-import) ser således ud hvis nogen er interresseret. Den kan afspille AIFF, AU, WAV, MIDI og RMF.

import java.applet.*;
import java.net.*;

public class LydApplikation
{
  public static void main(String s[])
  {
    try
    {
    AudioClip lyd;
        lyd = Applet.newAudioClip(new URL("file:" + System.getProperty("user.dir") + "/tada.wav"));
        lyd.play();
    }
    catch(MalformedURLException me)
    {
    System.out.println("MalformedURLException " + me);
    }
  }
}
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