Spec-Zone.ru › OpenJDK 17

Интерфейс 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 - если при чтении из потока возникает исключение ввода-вывода
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, 2021, 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/17/docs/api/java.desktop/javax/sound/sampled/Clip.html

Spec-Zone.ru

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