Este artículo comparte el código específico para Javax.Uund para realizar una reproducción de audio simple para su referencia. El contenido específico es el siguiente
/ ** * @see * @author al_assad [email protected] * @Date 17 de noviembre de 2016 a las 6:27:59 pm * @version v1.0 * Descripción: Player de audio simple (solo admite Au, Ra, Wav) * Implementar rápidamente la reproducción de audio sin usar JMF * */ import javax.sound.sample. import java.io.*; Public Class MusicPlayer {Private String MusicPath; // Archivo de audio Run Volátil Private Volátil = True; // Grabar si el audio reproduce el hilo privado MainThread; // El hilo de tareas para reproducir audio privado audioInputStream Audiostream; Audioformat privado audioformat; origen privado de origen de origen; Public MusicPlayer (String MusicPath) {this.MusicPath = MusicPath; prefetch (); } // Preparación de datos Private void prefetch () {try {// Get Audio Input Stream Audiostream = Audiosystem.GetAudioInputStream (nuevo archivo (MusicPath)); // Obtenga el objeto codificado de AudioFormat = Audiostream.GetFormat (); // Embalaje de información de audio dataline.info dataLineInfo = new Dataline.info (SourCedataline.Class, AudioMat, Audiosystem.Not_Specified); // Cree filas de datos de origen utilizando la clase de información después de envolver la información de audio, y actúe como el origen de la fuente de Audiosystem.getLine (datalineInfo); Sourcedataline.open (audioformat); SourceDataline.Start (); } catch (UnsupportedAudiofileeException ex) {ex.printstacktrace (); } Catch (LineUnavailableException ex) {Ex.PrintStackTrace (); } Catch (ioException ex) {ex.printstacktrace (); }} // Destructor: transmisión de lectura de audio Cerrar y líneas de datos protegidas Finalize () lanza lanzables {super.finalize (); SourceDataline.Drain (); SourceDataline.close (); audiostream.close (); } // Reproducir audio: Establecer si a bucle privado void playmusic (boolean bucle) lanza interruptedexception {try {if (loop) {while (true) {playmusic (); }} else {playmusic (); // Borrar la línea de datos y cerrar SourCedataline.Drain (); SourceDataline.close (); audiostream.close (); }} catch (ioException ex) {ex.printStackTrace (); }} private void playmusic () {try {sincronizado (this) {run = true; } // Lea el flujo de datos de audio a través de la línea de datos y envíela al mezclador; // Proceso de transmisión de flujo de datos: audioInputStream -> SourceDataline; audiostream = audiosystem.getAudioInputStream (nuevo archivo (musicPath)); int cuenta; byte tempbuff [] = nuevo byte [1024]; while ((count = audiostream.read (tempbuff, 0, tempbuff.length))! = -1) {sincronizado (this) {while (! run) wait (); } SourCedataline.Write (tempbuff, 0, count); }} Catch (UnsupportedAudiofileeException ex) {Ex.PrintStackTrace (); } Catch (ioException ex) {ex.printstacktrace (); } catch (InterruptedException ex) {Ex.PrintStackTrace (); }} // Plaza de reproducción de audio privado void stopMusic () {sincronizado (this) {run = false; notifyall (); }} // Continuar reproduciendo música private void continuemusic () {sincronizado (this) {run = true; notifyall (); }} // Método de control de llamadas externas: generar el hilo principal de audio; Public void start (boolean loop) {mainThread = new Thread (new Runnable () {public void run () {try {playmusic (loop);} catch (InterruptedException e) {E.PrintStackTrace ();}}}); MainThread.Start (); } // Método de control de llamadas externas: pause el hilo de audio public void stop () {new Thread (new Runnable () {public void run () {stopMusic ();}}). Start (); } // Método de control de llamadas externas: Continuar el hilo de audio public void continúa () {new Thread (new runnable () {public void run () {continuemUsic ();}}). Start (); } // prueba public static void main (string [] args) lanza interruptedException {musicPlayer reproductor = new MusicPlayer ("BGM/1.wav"); // Crear reproductor de reproductor de música. // Inicie la reproducción en forma de bucle, el jugador (falso) no juega TimeUnit.seconds.sleep (5); jugador.stop (); // pausa de la reproducción de audio TimeUnit.seconds.sleep (4); Player.Continues (); // Continuar comenzando a reproducir audio}}
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.