Интерфейс Clip
- Все суперинтерфейсы:
AutoCloseable, DataLine, Line
public interface Clip extends DataLine
Clip представляет собой особый тип линии данных, аудиоданные которой можно загрузить до начала воспроизведения, а не передавать в режиме реального времени. Поскольку данные загружены заранее и их длина известна, можно задать любую позицию в аудиоданных клипа, с которой начнётся воспроизведение. Также можно создать цикл, чтобы при воспроизведении клип повторялся. Для циклов задаются начальный и конечный кадры отсчётов, а также количество повторов.
Клип можно получить из Mixer, поддерживающего линии этого типа. Данные загружаются в клип при его открытии.
Воспроизведение аудиоклипа можно начать и остановить с помощью методов start и stop. Эти методы не сбрасывают позицию воспроизведения; start продолжает воспроизведение с позиции, на которой оно было остановлено в последний раз. Чтобы начать воспроизведение аудиоданных клипа с самого начала, достаточно после вызова stop вызвать setFramePosition(0), которая перематывает воспроизведение к началу клипа.
- Начиная с версии:
- 1.3
Краткое описание вложенных классов
Вложенные классы и интерфейсы, объявленные в интерфейсе DataLine
DataLine.Info
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final int |
LOOP_CONTINUOUSLY |
Значение, указывающее, что цикл должен продолжаться бесконечно, а не завершаться после заданного количества повторов. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
int |
getFrameLength() |
Возвращает длину данных в кадрах отсчётов. |
long |
getMicrosecondLength() |
Возвращает длительность данных в микросекундах. |
void |
loop |
Запускает циклическое воспроизведение с текущей позиции. |
void |
open |
Открывает клип, то есть получает необходимые системные ресурсы и приводит его в рабочее состояние. |
void |
open |
Открывает клип, используя формат и аудиоданные, содержащиеся в предоставленном потоке аудиоввода. |
void |
setFramePosition |
Задаёт позицию воспроизведения в кадрах отсчётов. |
void |
setLoopPoints |
Задаёт первый и последний кадры отсчётов, которые будут воспроизводиться в цикле. |
void |
setMicrosecondPosition |
Задаёт позицию воспроизведения в микросекундах. |
Методы, объявленные в интерфейсе DataLine
available, drain, flush, getBufferSize, getFormat, getFramePosition, getLevel, getLongFramePosition, getMicrosecondPosition, isActive, isRunning, start, stop
Методы, объявленные в интерфейсе Line
addLineListener, close, getControl, getControls, getLineInfo, isControlSupported, isOpen, open, removeLineListener
Подробное описание полей
LOOP_CONTINUOUSLY
static final int LOOP_CONTINUOUSLY
- См. также:
Подробное описание методов
open
void open(AudioFormat format, byte[] data, int offset, int bufferSize) throws LineUnavailableException
OPEN. Вызов этого метода для уже открытой линии недопустим и может привести к IllegalStateException.
Обратите внимание: некоторые линии после закрытия нельзя открыть повторно. Попытки повторно открыть такую линию всегда приводят к LineUnavailableException.
- Параметры:
-
format— формат предоставленных аудиоданных -
data— массив байтов, содержащий аудиоданные для загрузки в клип -
offset— позиция начала копирования, выраженная в байтах от начала массива -
bufferSize— количество байтов данных, загружаемых в клип из массива - Исключения:
-
LineUnavailableException— если линию невозможно открыть из-за ограничений на ресурсы -
IllegalArgumentException— если размер буфера не кратен целому числу кадров отсчётов или еслиformatне задан полностью либо недопустим -
IllegalStateException— если линия уже открыта - См. также:
open
void open(AudioInputStream stream) throws LineUnavailableException, IOException
OPEN. Вызов этого метода для уже открытой линии недопустим и может привести к IllegalStateException.
Обратите внимание: некоторые линии после закрытия нельзя открыть повторно. Попытки повторно открыть такую линию всегда приводят к LineUnavailableException.
- Параметры:
-
stream— поток аудиоввода, из которого аудиоданные будут считаны в клип - Исключения:
-
LineUnavailableException— если линию невозможно открыть из-за ограничений на ресурсы -
IOException— если при чтении потока возникает исключение ввода-вывода -
IllegalArgumentException— если аудиоформат потока задан не полностью либо недопустим -
IllegalStateException— если линия уже открыта - См. также:
getFrameLength
int getFrameLength()
- Возвращает:
- длину данных в кадрах отсчётов или
AudioSystem.NOT_SPECIFIED, если линия не открыта - См. также:
getMicrosecondLength
long getMicrosecondLength()
- Возвращает:
- длительность данных в микросекундах или
AudioSystem.NOT_SPECIFIED, если линия не открыта - См. также:
setFramePosition
void setFramePosition(int frames)
Чтобы получить текущую позицию в кадрах отсчётов, используйте метод getFramePosition интерфейса DataLine.
- Параметры:
-
frames— требуемая новая позиция воспроизведения, выраженная в кадрах отсчётов
setMicrosecondPosition
void setMicrosecondPosition(long microseconds)
Чтобы получить текущую позицию в микросекундах, используйте метод getMicrosecondPosition интерфейса DataLine.
- Параметры:
-
microseconds— требуемая новая позиция воспроизведения, выраженная в микросекундах
setLoopPoints
void setLoopPoints(int start, int end)
- Параметры:
-
start— начальная позиция цикла в кадрах отсчётов (отсчёт с нуля) -
end— конечная позиция цикла в кадрах отсчётов (отсчёт с нуля) или -1 для обозначения последнего кадра - Исключения:
-
IllegalArgumentException— если запрошенные точки цикла нельзя задать, обычно потому, что одна или обе находятся за пределами длительности данных либо конечная позиция предшествует начальной
loop
void loop(int count)
count раз возвращается к начальной точке цикла и, наконец, продолжается до конца клипа. Если при вызове этого метода текущая позиция находится за конечной точкой цикла, воспроизведение продолжается до конца клипа без повторов.
Значение count, равное 0, означает, что текущий цикл должен быть остановлен, а воспроизведение должно продолжиться до конца клипа. Поведение при вызове этого метода с любым другим значением во время выполнения цикла не определено.
Если во время циклического воспроизведения оно остановлено, состояние цикла сбрасывается; прерванное выполнение цикла не влияет на поведение последующих запросов на повтор или запуск воспроизведения.
- Параметры:
-
count— количество возвратов воспроизведения от конечной позиции цикла к начальной либоLOOP_CONTINUOUSLY, чтобы цикл продолжался до прерывания
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/sound/sampled/Clip.html