Spec-Zone.ru › OpenJDK 24

Интерфейс Clip

Все суперинтерфейсы:
AutoCloseable, DataLine, Line
public interface Clip extends DataLine
Интерфейс Clip представляет собой специальный тип линии данных, чьи аудиоданные могут быть загружены до воспроизведения, вместо потоковой передачи в реальном времени.

Поскольку данные предварительно загружены и имеют известную длину, вы можете установить для клипа начало воспроизведения в любой позиции его аудиоданных. Вы также можете создать цикл, так что при воспроизведении клипа он будет повторяться циклически. Циклы задаются начальной и конечной выборками кадров, а также количеством раз, которое цикл должен быть воспроизведен.

Клипы могут быть получены из Mixer, который поддерживает линии этого типа. Данные загружаются в клип при его открытии.

Воспроизведение аудиоклипа может быть начато и остановлено с помощью методов start и stop. Эти методы не сбрасывают позицию медиа; start вызывает продолжение воспроизведения с позиции, на которой оно было остановлено в последний раз. Чтобы перезапустить воспроизведение с начала аудиоданных клипа, просто выполните вызов stop с setFramePosition(0), который перематывает медиа в начало клипа.

С:
1.3

Краткое описание вложенных классов

Вложенные классы/интерфейсы, объявленные в интерфейсе javax.sound.sampled.DataLine

DataLine.Info

Краткое описание полей

Модификатор и тип Поле Описание
static final int LOOP_CONTINUOUSLY
Значение, указывающее, что циклическое воспроизведение должно продолжаться неограниченно, а не завершаться после определенного числа циклов.

Краткое описание методов

Модификатор и тип Метод Описание
int getFrameLength()
Получение длины медиа в выборках кадров.
long getMicrosecondLength()
Получение длительности медиа в микросекундах.
void loop(int count)
Начинает циклическое воспроизведение с текущей позиции.
void open(AudioFormat format, byte[] data, int offset, int bufferSize)
Открывает клип, что означает получение им необходимых системных ресурсов и готовность к работе.
void open(AudioInputStream stream)
Открывает клип с форматом и аудиоданными, присутствующими в предоставленном аудиопотоке.
void setFramePosition(int frames)
Устанавливает позицию медиа в выборках кадров.
void setLoopPoints(int start, int end)
Устанавливает первые и последние выборки кадров, которые будут воспроизводиться в цикле.
void setMicrosecondPosition(long microseconds)
Устанавливает позицию медиа в микросекундах.

Методы, объявленные в интерфейсе javax.sound.sampled.DataLine

available, drain, flush, getBufferSize, getFormat, getFramePosition, getLevel, getLongFramePosition, getMicrosecondPosition, isActive, isRunning, start, stop

Методы, объявленные в интерфейсе javax.sound.sampled.Line

addLineListener, close, getControl, getControls, getLineInfo, isControlSupported, isOpen, open, removeLineListener

Подробное описание полей

LOOP_CONTINUOUSLY

static final int LOOP_CONTINUOUSLY
Значение, указывающее, что цикл должен продолжаться бесконечно, а не завершаться после определённого количества повторений.
См. также:
  • loop(int)
  • Значения константных полей

Подробное описание методов

open

void open(AudioFormat format, byte[] data, int offset, int bufferSize) throws LineUnavailableException
Открывает клип, что означает получение необходимых системных ресурсов и приведение его в рабочее состояние. Клип открывается с указанным форматом и аудиоданными. Если операция выполняется успешно, линия помечается как открытая, и событие OPEN отправляется слушателям линии.

Вызов этого метода для линии, которая уже открыта, является недопустимым и может привести к IllegalStateException.

Обратите внимание, что некоторые линии после закрытия не могут быть повторно открыты. Попытки повторного открытия таких линий всегда приведут к LineUnavailableException.

Параметры:
format - формат предоставленных аудиоданных
data - массив байтов, содержащий аудиоданные для загрузки в клип
offset - точка начала копирования, выраженная в байтах с начала массива
bufferSize - количество байтов данных для загрузки в клип из массива
Исключения:
LineUnavailableException - если линия не может быть открыта из-за ограничений ресурсов
IllegalArgumentException - если размер буфера не представляет собой целое число кадров образцов или если format не полностью определён или недействителен
IllegalStateException - если линия уже открыта
См. также:
  • Line.close()
  • Line.isOpen()
  • LineListener

open

void open(AudioInputStream stream) throws LineUnavailableException, IOException
Открывает клип с форматом и аудиоданными, представленными в предоставленном потоке аудиоданных. Открытие клипа означает, что он должен получить все необходимые системные ресурсы и стать работоспособным. Если эта операция выполняется успешно, линия помечается как открытая, и событие OPEN отправляется слушателям линии.

Вызов этого метода для линии, которая уже открыта, является недопустимым и может привести к IllegalStateException.

Обратите внимание, что некоторые линии после закрытия не могут быть повторно открыты. Попытки повторного открытия таких линий всегда приведут к LineUnavailableException.

Параметры:
stream - поток аудиоданных, из которого аудиоданные будут считаны в клип
Исключения:
LineUnavailableException - если линия не может быть открыта из-за ограничений ресурсов
IOException - если во время чтения из потока возникает исключение I/O
IllegalArgumentException - если формат аудио потока не полностью определён или недействителен
IllegalStateException - если линия уже открыта
См. также:
  • Line.close()
  • Line.isOpen()
  • LineListener

getFrameLength

int getFrameLength()
Получение длительности медиа в кадрах образцов.
Возвращает:
длительность медиа, выраженную в кадрах образцов, или AudioSystem.NOT_SPECIFIED, если линия не открыта
См. также:
  • AudioSystem.NOT_SPECIFIED

getMicrosecondLength

long getMicrosecondLength()
Получение продолжительности медиа в микросекундах.
Возвращает:
длительность медиа, выраженную в микросекундах, или AudioSystem.NOT_SPECIFIED, если линия не открыта
См. также:
  • 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)
Устанавливает начальный и конечный кадры образцов, которые будут воспроизводиться в цикле. Конечная точка должна быть больше или равна начальной точке, и обе должны находиться в пределах размера загруженного медиа. Значение 0 для начальной точки означает начало загруженного медиа. Аналогично, значение -1 для конечной точки указывает на последний кадр медиа.
Параметры:
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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/sound/sampled/Clip.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API