Artikel ini membagikan kode spesifik untuk javax.sound untuk mewujudkan pemutaran audio sederhana untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
/ ** * @see * @author al_assad [email protected] * @Date 17 November 2016 jam 6:27:59 PM * @Version v1.0 * Deskripsi: Pemutar audio sederhana (hanya mendukung AU, RA, WAV) * dengan cepat menerapkan playback audio tanpa menggunakan JMF */ impor Javax. impor java.io.*; Public Class MusicPlayer {Private String MusicPath; // file audio private volatile boolean run = true; // Rekam apakah audio memainkan utas pribadi MainThread; // utas tugas untuk memainkan audio audioInputStream audioStream; audioformat audioformat pribadi; Sourcedataline Sourcedataline Pribadi; Public MusicPlayer (String MusicPath) {this.MusicPath = MusicPath; prefetch (); } // Data Persiapan Private void prefetch () {coba {// Dapatkan audio input stream audioStream = audioSystem.getaAudioInputStream (file baru (musicpath)); // Dapatkan objek yang dikodekan dari audioformat = audioStream.getFormat (); // pengemasan informasi audio dataline.info datalineinfo = dataline.info baru (Sourcedataline.class, AudiOformat, audiosystem.not_specified); // Buat baris data sumber menggunakan kelas info setelah membungkus informasi audio, dan bertindak sebagai sumber sumber mixer = (Sourcedataline) audiosystem.getline (datalineinfo); Sourcedataline.open (audioformat); Sourcedataline.start (); } catch (unsupportedAudioFileException ex) {ex.printstacktrace (); } catch (lineunavailableException ex) {ex.printstacktrace (); } catch (ioException ex) {ex.printstacktrace (); }} // Destructor: Tutup aliran baca audio dan garis data yang dilindungi void finalize () lemparan lempar {super.finalize (); Sourcedataline.drain (); Sourcedataline.close (); audiostream.close (); } // Mainkan audio: atur apakah akan loop private void playmusic (boolean loop) melempar interruptedException {coba {if (loop) {while (true) {playmusic (); }} else {playmusic (); // Bersihkan garis data dan tutup Sourcedataline.drain (); Sourcedataline.close (); audiostream.close (); }} catch (ioException ex) {ex.printstacktrace (); }} private void playmusic () {coba {disinkronkan (this) {run = true; } // Baca aliran data audio melalui jalur data dan kirim ke mixer; // Proses transmisi aliran data: AudioInputStream -> Sourcedataline; audioStream = audiosystem.getaAudioInputStream (file baru (musicpath)); jumlah int; byte tempbuff [] = byte baru [1024]; while ((count = audiostream.read (tempbuff, 0, tempbuff.length))! = -1) {disinkronkan (ini) {while (! run) tunggu (); } Sourcedataline.write (Tempbuff, 0, Count); }} catch (unsportedaudiofileException ex) {ex.printstacktrace (); } catch (ioException ex) {ex.printstacktrace (); } catch (InterruptedException ex) {ex.PrintStackTrace (); }} // jeda audio playback private void stopmusic () {disinkronkan (this) {run = false; notifyall (); }} // Terus mainkan musik pribadi void continuemusic () {disinkronkan (this) {run = true; notifyall (); }} // Metode kontrol panggilan eksternal: Hasilkan utas utama audio; public void start (loop boolean) {mainThread = utas baru (runnable baru () {public void run () {coba {playmusic (loop);} catch (interruptedException e) {e.printstacktrace ();}}}); MainThread.start (); } // Metode kontrol panggilan eksternal: Jeda thread audio public void stop () {new thread (runnable baru () {public void run () {stopMusic ();}}). Start (); } // Metode kontrol panggilan eksternal: Lanjutkan void public utas audio continues () {thread baru (runnable baru () {public void run () {continuemusic ();}}). Start (); } // uji public static void main (string [] args) melempar InterruptedException {MusicPlayer player = new MusicPlayer ("bgm/1.wav"); // Buat pemutar musik pemutar musik.start (true); // Mulai pemutaran dalam bentuk loop, pemain (false) tidak bermain timeunit.seconds.sleep (5); player.stop (); // jeda audio playback timeunit.seconds.sleep (4); player.continues (); // Terus mulai bermain audio}}
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.