Spec-Zone.ru › OpenJDK 27

Интерфейс 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(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)
Задаёт позицию данных в микросекундах.

Методы, объявленные в интерфейсе 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(LineListener listener)
Добавляет слушателя к этой линии.
void close()
Закрывает линию, указывая, что используемые ею системные ресурсы можно освободить.
Control getControl(Control.Type control)
Возвращает элемент управления указанного типа, если он имеется.
Control[] getControls()
Возвращает набор элементов управления, связанных с этой линией.
Line.Info getLineInfo()
Возвращает объект Line.Info, описывающий эту линию.
boolean isControlSupported(Control.Type control)
Указывает, поддерживает ли линия элемент управления указанного типа.
boolean isOpen()
Указывает, открыта ли линия, то есть зарезервировала ли она системные ресурсы и находится ли в рабочем состоянии, хотя в данный момент она может не воспроизводить и не записывать звук.
void open()
Открывает линию, указывая, что она должна получить все необходимые системные ресурсы и перейти в рабочее состояние.
void removeLineListener(LineListener listener)
Удаляет указанного слушателя из списка слушателей этой линии.

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

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 — если при чтении потока возникает ошибка ввода-вывода
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, если цикл должен продолжаться до прерывания

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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