Музыкальный проигрыватель на Java? - PullRequest
0 голосов
/ 30 июня 2011

У меня есть код, который воспроизводит MP3-файл Java.

Проблема, с которой я столкнулся, заключалась в том, что

-> Звук выводился только при запуске программы в режиме отладки с точками останова, но не в режиме выполнения.

Каким образом можно решить эту проблему?Я приложил код для лучшего понимания.

 FileInputStream mp3_file=new FileInputStream("xyz.mp3");
 Player mp3=new Player(mp3_file);
 mp3.play();
 System.out.println("Over");

Ответы [ 4 ]

1 голос
/ 30 июня 2011

Возможно, ваша программа заканчивается до того, как музыка закончится.Убедитесь, что ваша программа не заканчивается, пока музыка не закончилась.Например:

mp3.play();
System.out.println("Press Enter to stop");
System.in.read();  // wait until user presses Enter
0 голосов
/ 20 июля 2018

Потоки с директивой waitFor () могут быть подходящим вариантом. Это также может дать вам возможность иметь отдельный поток для интерфейса управления, который позволяет прерывать или приостанавливать работу.

0 голосов
/ 30 июня 2011

Я столкнулся с той же проблемой в моем проекте.Я использовал для цикла.Это решит мою проблему.

FileInputStream mp3_file=new FileInputStream("xyz.mp3");
Player mp3=new Player(mp3_file);
 for(int i=0;i<=3; i++)
     mp3.play();

System.out.println("Over"); 

Но если создать исполняемый jar-файл вашего кода и запустить его, он работает нормально .....;)

0 голосов
/ 30 июня 2011

Скорее всего, ваша программа просто завершается, потому что код в методе main завершается очень быстро.

Мы не знаем, какой у вас Player, но я думаю, что он воспроизводит музыку в потоке, отличном от основного потока, поэтому, пока ваш код останавливается, он работает нормально.

В методе main вы должны остановить выполнение кода. Для этого вы можете просто прочитать что-то из консоли, используя:

import java.util.Scanner;
...
// here we will get input and program won't quit until we press Return
new Scanner(System.in).readLine();

В дополнение к этому вы можете использовать что-то вроде

try{Thread.sleep(Long.MAX_VALUE);} catch(Exception e){}

для сна основного потока и ожидания слишком много времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...