BigClip работал на вас?
Если нет, то вот что может сработать. Предупреждение, это маленький запутанный.
http://hexara.com/VSL/VSL2.htm
С помощью этого апплета вы можете загрузить wav - я загрузил wavs дольше 5 минут, и он работал нормально, но аудиоданные действительно занимают много оперативной памяти.
После загрузки WAV вы можете навести курсор мыши на любую точку и воспроизвести, удерживая ее нажатой и перетаскивая. Очевидно, это не совсем то, что ВЫ хотите сделать, так как вы хотите воспроизвести с точки, а не беспокоиться о перетаскивании или скорости перетаскивания. Но путь, который я выбрал, чтобы привести данные в воспроизводимое состояние, все равно должен работать для вас.
Если у вас есть работающие AudioInputStream и AudioFileFormat, вы можете настроить внутренний массив и считывать данные непосредственно в него. Формат аудиофайла дает вам кодировку и длину в кадрах, которые вы можете использовать для расчета размера вашего массива.
Затем создайте TargetDataLine, который получает свои аудиоданные из созданного вами массива. TDL должен иметь переменную, которая отмечает, где начнется следующее чтение. Вы можете использовать свой JSlider, чтобы изменить содержимое этой переменной так, чтобы она указывала на любой желаемый кадр.
Если у вас нет рабочего AudioInputStream, есть способы его получить ... но он более запутанный, включая объекты ByteArrayOutput и Input Stream. Наверное, нет необходимости идти туда. (Я использую их для чтения данных клиента в вышеупомянутом апплете.)
Что касается вашего вопроса о текущем расположении фрейма, ключевая проблема заключается в том, что JVM обрабатывает аудиоданные порциями и имеет тенденцию опережать то, что слышно в пакетах. Я долго бился об эту проблему, потом придумал:
http://www.java -gaming.org / index.php / тема, 24605.0.html