Интерфейс Clip
- Все суперинтерфейсы:
AutoCloseable, DataLine, Line
public interface Clip extends DataLine
Clip представляет собой особый тип линии данных, аудиоданные которой можно загрузить до воспроизведения, а не передавать в реальном времени. Поскольку данные предварительно загружены и имеют известную длину, можно задать начало воспроизведения клипа с любой позиции в его аудиоданных. Также можно создать цикл, чтобы клип при воспроизведении повторялся. Для циклов задаются начальный и конечный кадры сэмплов, а также количество повторов.
Клип можно получить от Mixer, поддерживающего линии этого типа. Данные загружаются в клип при его открытии.
Воспроизведение аудиоклипа можно запускать и останавливать с помощью методов start и stop. Эти методы не сбрасывают позицию воспроизведения; start продолжает воспроизведение с позиции, на которой оно было остановлено в последний раз. Чтобы начать воспроизведение с начала аудиоданных клипа, достаточно вызвать stop, а затем setFramePosition(0), который перематывает данные к началу клипа.
- Начиная с:
- 1.3
Краткое описание вложенных классов
Вложенные классы и интерфейсы, объявленные в интерфейсе DataLine
DataLine.Info | Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static class |
DataLine.Info |
Помимо информации о классе, унаследованной от суперкласса, 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 | Модификатор и тип | Метод | Описание |
|---|---|---|
int |
available() |
Возвращает количество байтов данных, доступных в данный момент приложению для обработки во внутреннем буфере линии данных. |
void |
drain() |
Считывает данные из очереди линии, продолжая ввод-вывод до опустошения внутреннего буфера линии данных. |
void |
flush() |
Удаляет из линии данные, находящиеся в очереди. |
int |
getBufferSize() |
Возвращает максимальное количество байтов данных, помещающихся во внутренний буфер линии данных. |
AudioFormat |
getFormat() |
Возвращает текущий формат (кодирование, частоту сэмплирования, количество каналов и т. д.) аудиоданных линии данных. |
int |
getFramePosition() |
Возвращает текущую позицию в аудиоданных в кадрах сэмплов. |
float |
getLevel() |
Возвращает текущий уровень громкости линии. |
long |
getLongFramePosition() |
Возвращает текущую позицию в аудиоданных в кадрах сэмплов. |
long |
getMicrosecondPosition() |
Возвращает текущую позицию в аудиоданных в микросекундах. |
boolean |
isActive() |
Указывает, выполняет ли линия активный ввод-вывод (например, воспроизведение или запись). |
boolean |
isRunning() |
Указывает, работает ли линия. |
void |
start() |
Разрешает линии выполнять ввод-вывод данных. |
void |
stop() |
Останавливает линию. |
Методы, объявленные в интерфейсе Line
addLineListener, close, getControl, getControls, getLineInfo, isControlSupported, isOpen, open, removeLineListener | Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addLineListener |
Добавляет слушателя к этой линии. |
void |
close() |
Закрывает линию, указывая, что используемые ею системные ресурсы можно освободить. |
Control |
getControl |
Возвращает элемент управления указанного типа, если он имеется. |
Control[] |
getControls() |
Возвращает набор элементов управления, связанных с этой линией. |
Line.Info |
getLineInfo() |
Возвращает объект Line.Info, описывающий эту линию. |
boolean |
isControlSupported |
Указывает, поддерживает ли линия элемент управления указанного типа. |
boolean |
isOpen() |
Указывает, открыта ли линия, то есть зарезервировала ли она системные ресурсы и находится ли в рабочем состоянии, хотя в данный момент она может не воспроизводить и не записывать звук. |
void |
open() |
Открывает линию, указывая, что она должна получить все необходимые системные ресурсы и перейти в рабочее состояние. |
void |
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.