mp3와 ogg 플레이어를 모두 구현해야하는 멀티 플랫폼 데스크톱 응용 프로그램에서 작업하고 있습니다. 이제 mp3 부분이 좋아졌지만 ogg 재생을 시도하는 것이 효과가 없습니다. ... 나는 javazoom.jlgui의 BasicPlayer
을 사용하고 다음하고Java를 사용하여 ogg를 재생할 때 검색을 적용해야합니다.
내 또 다른 OGG을 추구 구현하는 기능을 추구 추가 할 수있는 방법이
/**
* 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(); }'? (나는 당신의 프로그램이 어떻게 작동하는지 알지 못하지만'시작'->'일시 정지'는 의심 스럽다.) – Radiodef
@Radiodef : Question edited ... – Fahad
나는 이것이 간단하고 직선적 인 작업이 될 것이라고 생각하지 않는다. 추구를 구현하십시오. OGG 형식은 매우 다르며 탐색을위한 기본 지원이 정확하지 않은 것 같습니다. – helmy