Este artigo compartilha o código específico para Javax.Sound realizar uma reprodução simples de áudio para sua referência. O conteúdo específico é o seguinte
/ ** * @see * @author al_assad [email protected] * @Date 17 de novembro de 2016 às 18:27:59 * @Version v1.0 * Descrição: Player simples de áudio (apenas suporta Au, RA, Wav) * Implementar rapidamente o AUDIO Playback sem usar jmf * */ importar javax.s, importar java.io.*; classe pública MusicPlayer {private string musicpath; // arquivo de áudio privado boolean run = true; // Registre se o áudio reproduz thread privado MainThread; // O tópico da tarefa para reproduzir áudio privado de áudioInputStream AudioStream; Audioformat Private AudioFormat; Private Sourcedataline SourceDataline; public MusicPlayer (String musicPath) {this.musicPath = musicpath; prefetch (); } // Preparação de dados private void prefetch () {try {// Obtenha o fluxo de entrada de áudio AudiosTream = Audiosystem.GetAudioInputStream (novo arquivo (MusicPath)); // Obtenha o objeto codificado de AudioFormat = AudiosTream.getFormat (); // embalagem de informações de áudio dataline.info datalineInfo = new dataline.info (adorável.class, audioformat, audiosystem.not_specificou); // Crie linhas de dados de origem usando a classe Info após embrulhar as informações de áudio e atuar como a fonte de origem do mixer = (SourceDataline) Audiosystem.getLine (DatalineInfo); azedatalina.open (AudioFormat); Sourcedataline.Start (); } Catch (não suportadoDaudioFileException Ex) {Ex.PrintStackTrace (); } catch (lineUnAVALableException ex) {Ex.PrintStackTrace (); } catch (ioexception ex) {ex.printStackTrace (); }} // Destrutor: Fechar o fluxo de linhas de leitura e as linhas de dados Protected Void Finalize () lança o Throwable {super.finalize (); SourceDataline.Drain (); SourceDataline.Close (); AudiosTream.close (); } // Play Audio: Defina se deve fazer loop privado void playmusic (loop booleano) lança interruptedException {try {if (loop) {while (true) {playmusic (); }} else {playmusic (); // Limpe a linha de dados e feche o centro de oferta.drain (); SourceDataline.Close (); AudiosTream.close (); }} catch (ioexception ex) {ex.printStackTrace (); }} private void playmusic () {try {synchronized (this) {run = true; } // Leia o fluxo de dados de áudio através da linha de dados e envie -o para o mixer; // Processo de transmissão do fluxo de dados: AudioInputStream -> SourceDataline; AudiosTream = Audiosystem.GetAudioInputStream (novo arquivo (MusicPath)); int contagem; byte tempbuff [] = novo byte [1024]; while ((count = AudiosTream.read (tempBuff, 0, tempbuff.length)! = -1) {sincronizado (this) {while (! run) espera (); } SourceDataline.write (tempbuff, 0, contagem); }} Catch (não suportadaudiofileException ex) {ex.PrintStackTrace (); } catch (ioexception ex) {ex.printStackTrace (); } catch (interruptedException ex) {ex.printStackTrace (); }} // pausa de reprodução de áudio private void stopmusic () {synchronized (this) {run = false; notifyAll (); }} // Continue tocando música private void continueemusic () {sincronizado (this) {run = true; notifyAll (); }} // Método de controle de chamada externo: gerar thread principal de áudio; public void start (loop boolean) {mainthread = new Thread (new Runnable () {public void run () {try {playMusic (loop);} catch (interruptedException e) {e.printStacktrace ();}}}); mainthread.start (); } // Método de controle de chamada externo: pause o thread de áudio public void stop () {new Thread (new Runnable () {public void run () {stopMusic ();}}). Start (); } // Método de controle de chamada externo: Continue o thread de áudio public void continua () {new Thread (new Runnable () {public void run () {continuaemusic ();}}). Start (); } // Teste public static void main (string [] args) lança interruptedException {MusicPlayer player = new MusicPlayer ("bgm/1.wav"); // Crie player player player.start (true); // inicia a reprodução em uma forma de loop, o jogador (falso) não joga timeunit.seconds.sleep (5); player.stop (); // pausa de reprodução de áudio timeunit.seconds.sleep (4); player.Continues (); // continua começando a reproduzir áudio}}
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.