Spec-Zone.ru › OpenJDK 8

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