Spec-Zone.ru › OpenJDK 21

Интерфейс 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 - если линия уже открыта
SecurityException - если линия не может быть открыта из-за ограничений безопасности
См. также:
  • Line.close()
  • Line.isOpen()
  • LineListener

open

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

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

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

Параметры:
stream - поток аудиоввода, из которого аудиоданные будут считаны в клип
Исключения:
LineUnavailableException - если линия не может быть открыта из-за ограничений ресурсов
IOException - если при чтении из потока возникает исключение I/O
IllegalArgumentException - если аудиоформат потока не полностью указан или недействителен
IllegalStateException - если линия уже открыта
SecurityException - если линия не может быть открыта из-за ограничений безопасности
См. также:
  • 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, 2023, 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/21/docs/api/java.desktop/javax/sound/sampled/Clip.html

Spec-Zone.ru

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