Я работаю над многоплатформенным настольным приложением, в котором необходимо реализовать как проигрыватель mp3, так и ogg, включая поиск. Теперь моя часть mp3 в порядке, но поиск в ogg play не работает...
Я использую BasicPlayer
из javazoom.jlgui, и ниже приведена моя функция поиска.
/**
* Skip bytes in the File inputstream. It will skip N frames matching to
* bytes, so it will never skip given bytes length exactly.
*
* @param bytes
* @return value>0 for File and value=0 for URL and InputStream
* @throws BasicPlayerException
* @throws IOException
*/
protected long skipBytes(long bytes) throws BasicPlayerException, NullPointerException, IOException {
long totalSkipped = 0;
if (m_dataSource instanceof File) {
log.info("Bytes to skip : " + bytes);
int previousStatus = m_status;
m_status = SEEKING;
long skipped = 0;
synchronized (m_audioInputStream) {
notifyEvent(BasicPlayerEvent.SEEKING, getEncodedStreamPosition(), -1, null);
initAudioInputStream();
if (m_audioInputStream != null) {
// Loop until bytes are really skipped.
while (totalSkipped < (bytes - SKIP_INACCURACY_SIZE)) {
skipped = m_audioInputStream.skip(bytes - totalSkipped);
if (skipped == 0) {
break;
}
totalSkipped = totalSkipped + skipped;
log.info("Skipped : " + totalSkipped + "/" + bytes);
if (totalSkipped == -1) {
throw new BasicPlayerException(BasicPlayerException.SKIPNOTSUPPORTED);
}
}
}
}
notifyEvent(BasicPlayerEvent.SEEKED, getEncodedStreamPosition(), -1, null);
m_status = OPENED;
if (previousStatus == PLAYING) {
startPlayback();
} else if (previousStatus == PAUSED) {
startPlayback();
pausePlayback();
}
}
return totalSkipped;
}
Есть ли способ добавить еще одну функцию поиска для реализации поиска ogg? заранее спасибо...
Не знаю много о том, как это работает, но он отлично работает для mp3, включая поиск, воспроизведение аудио, паузу, остановку. .
Я не менял никакую часть исходного кода BasicPlayer Api: http://www.javazoom.net/jlgui/sources/basicplayer3.0.zip
когда я подробно проверил детали, проигрыватель jlgui3.0, реализованный с использованием этого кода, также не реализует поиск воспроизведения Ogg, они упомянули об этом. Таким образом, текущий код необходимо добавить с отдельной функцией поиска для воспроизведения Ogg и использовать ее вместо текущего seek()
всякий раз, когда воспроизводится звук Ogg...
Я не знаю, как это сделать, помогите мне с хорошим источником для ссылки и простым способом реализовать то же самое...
else if (previousStatus == PAUSED) { startPlayback(); pausePlayback(); }
? (Возможно, я не знаю, как работает ваша программа, ноstart
-> сразуpause
кажется подозрительным.) - person Radiodef   schedule 27.10.2014200+
, когда у вас есть максимум18+
. Это решено или у вас все еще есть идеи (я не использую Java, но мог бы оказать помощь, не относящуюся к языку) - person VC.One   schedule 15.11.2014(x4F\x67\x67\x53)
, затем вы идете на 6 байт вперед и с 7 по 14 байт читаете Granule Pos (8 байт). Теперь осложнение: ЧТО ТАКОЕ АУДИОКОДЕК? Flac, Opus, Vorbis? GranulePos может означать, сколько сэмплов PCM уже декодировано (сэмплы = время). - person VC.One   schedule 21.11.2014