이 기사는 Javax.sound의 특정 코드를 공유하여 참조에 대한 간단한 오디오 재생을 실현합니다. 특정 내용은 다음과 같습니다
/ ** * @see * @author al_assad [email protected] * @date 2016 년 11 월 17 일 오후 6시 27 분 59 초 * @version v1.0 * 설명 : 간단한 오디오 플레이어 (au, ra, wav) * JMF를 사용하지 않고 오디오 재생을 신속하게 구현하십시오 */ 가져 오기 javax.sount.sampled. java.io.*; 공개 클래스 음악 플레이어 {Private String MusicPath; // 오디오 파일 개인 휘발성 부울 런 = true; // 오디오가 개인 스레드를 재생하는지 여부를 기록합니다. // 오디오를 사용하기위한 작업 스레드 비공개 오디오 인치 스트림 오디오 스트림; 비공개 아우디 오포 매트 오디오 기포; 개인 소스 소다 린 소스 양다 린; Public MusicPlayer (String MusicPath) {this.musicPath = MusicPath; 프리 페치 (); } // 데이터 준비 Private void prefetch () {try {// 오디오 입력 스트림 audiostream = audiosystem.getaudioinputstream (new file (musicpath)); // audioformat = audiostream.getformat ()의 인코딩 된 객체를 가져옵니다. // 오디오 정보 Dataline.info DatalineInfo = New Dataline.info (SourcedAtaline.class, AudioFormat, Audiosystem.not_specified); // 오디오 정보를 래핑 한 후 정보 클래스를 사용하여 소스 데이터 행을 생성하고 믹서의 소스 소스로 작동 = (outscedataline) audiosystem.getline (datalineinfo); outcedataline.open (audioformat); Sourcedataline.start (); } catch (unsupportedaudiofileException ex) {ex.printstacktrace (); } catch (lineUnaVailableException ex) {ex.printstacktrace (); } catch (ioexception ex) {ex.printstacktrace (); }} // Destructor : 오디오 읽기 스트림 및 데이터 라인을 닫는 void void finalize () 던지기 가능 {super.finalize (); Sourcedataline.drain (); Sourcedataline.close (); audiostream.close (); } // 오디오 재생 : 루프를 루프할지 여부를 비공개 공극 playmusic (boolean loop) trows interruptedException {try {if (loop) {while (true) {playmusic (); }} else {playMusic (); // 데이터 라인을 지우고 sourcedataline.drain ()을 닫습니다. Sourcedataline.close (); audiostream.close (); }} catch (ioexception ex) {ex.printstacktrace (); }} private void playmusic () {try {synchronized (this) {run = true; } // 데이터 라인을 통해 오디오 데이터 스트림을 읽고 믹서로 보냅니다. // 데이터 스트림 전송 프로세스 : AudioInputStream-> Sourcedataline; audiostream = audiosystem.getaudioinputstream (새 파일 (musicpath)); int count; 바이트 온도 [] = 새로운 바이트 [1024]; while ((count = audiostream.read (tempbuff, 0, tempbuff.length))! = -1) {synchronized (this) {while (! run) wait (); } sourcedataline.write (tempbuff, 0, count); }} catch (unsupportedaudiofileException ex) {ex.printstacktrace (); } catch (ioexception ex) {ex.printstacktrace (); } catch (InterruptedException ex) {ex.printstacktrace (); }} // 일시 중지 오디오 재생 비공개 void stopmusic () {synchronized (this) {run = false; notifyall (); }} // 음악을 계속 재생하고 개인 무효화 continuemusic () {synchronized (this) {run = true; notifyall (); }} // 외부 통화 제어 방법 : 오디오 메인 스레드 생성; public void start (boolean loop) {mainthread = new Thread (new Runnable () {public void run () {try {playmusic (loop);} catch (InterpruptedException e) {e.printstacktrace ();}}); mainthread.start (); } // 외부 통화 제어 방법 : 오디오 스레드를 일시 중지 공개 void stop () {new Thread (new runnable () {public void run () {stopMusic ();}}). start (); } // 외부 통화 제어 방법 : 오디오 스레드 계속 공개 void continues () {new Thread (new Runnable () {public void run () {continuemusic ();}}). start (); } // test public static void main (string [] args)은 중단 된 결과를 던졌습니다. // 음악 생성 플레이어 플레이어 플레이어 플레이어 .Start (true); // 루프 양식으로 재생을 시작하고 플레이어 (False)는 TimeUnit.seconds.sleep (5)를 재생하지 않습니다. player.stop (); // 오디오 재생 시간을 일시 중지하십시오. player.continues (); // 오디오 재생을 계속 시작합니다}}
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.