Spec-Zone.ru › OpenJDK 25

Интерфейс 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(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

Методы, объявленные в интерфейсе 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 — если при чтении потока возникает исключение ввода-вывода
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)
Задаёт позицию воспроизведения в кадрах отсчётов. Позиция отсчитывается с нуля: первый кадр имеет номер 0. При следующем запуске клип начнёт воспроизводиться с кадра, соответствующего этой позиции.

Чтобы получить текущую позицию в кадрах отсчётов, используйте метод 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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/sound/sampled/Clip.html

Spec-Zone.ru

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