У меня есть не так простой вопрос о Java Sound (пакет javax.sound).Гладкий звук искать
Я реализую MP3-плеер с перекрестным затуханием и плавным регулированием громкости и поиска.
Я читаю звук как поток в 4096 байтовых кусках и вычисляю позицию в милисекундах вручную.
Когда я хочу искать() (изменить базовое положение, откуда поток будет красным), я слышу действительно уродливый «прыжок» в звуковой волне. Я попробовал изучить JLayer и другие MP3-интерфейсы, но у них вообще нет функции seek(), или у них есть этот «уродливый звук».
Мой вопрос: Как я могу сделать этот переход от одного звукового волнового куска к другому более плавному? Я попробовал интерполяцию, но разумное количество времени, чтобы «не слышать прыжок», составляет 300 мс, и это слишком долго для функции seek().
У вас возникли проблемы?
Знаете ли вы решение?
Вставьте здесь пример кода, чтобы быть уверенным.
public void seek(long pPosition)
{
sourceDataLine.flush();
seekIndex = (sourceDataLine.getMicrosecondPosition()/1000) - currentPositionInMilliseconds;
}
public long getPositionInMilliseconds()
{ return (sourceDataLine.getMicrosecondPosition()/1000) - seekIndex; }
«положение в миллисекундах» необходимо из-за DataLine API из javax.sound
Спасибо Я разочарован ...
Звучит это неудобно? http://www.youtube.com/watch?v=5KPeirc4rqU –