Spec-Zone.ru › OpenJDK 21

Интерфейс TargetDataLine

Все суперинтерфейсы:
AutoCloseable, DataLine, Line
public interface TargetDataLine extends DataLine
Линия целевого потока данных — это тип DataLine, из которого можно считывать аудиоданные. Наиболее распространённый пример — линия данных, получающая данные от устройства захвата аудио. (Устройство реализовано как микшер, который записывает данные в линию целевого потока данных.)

Обратите внимание, что соглашение об именах для этого интерфейса отражает взаимоотношения между линией и её микшером. С точки зрения приложения, линия целевого потока данных может выступать в качестве источника аудиоданных.

Линию целевого потока данных можно получить из микшера, вызвав метод getLine объекта Mixer с соответствующим объектом DataLine.Info.

Интерфейс TargetDataLine предоставляет метод для считывания захваченных данных из буфера линии целевого потока данных. Приложения, которые записывают аудио, должны считывать данные с линии целевого потока данных достаточно быстро, чтобы предотвратить переполнение буфера, что может привести к разрывам в захваченных данных, воспринимаемым как щелчки. Приложения могут использовать метод available, определённый в интерфейсе DataLine, для определения количества данных, в настоящее время находящихся в очереди в буфере линии данных. Если буфер переполнится, самые старые данные в очереди будут отброшены и заменены новыми данными.

С:
1.3
См. также:
  • Mixer
  • DataLine
  • SourceDataLine

Краткое описание вложенных классов

Вложенные классы/интерфейсы, объявленные в интерфейсе javax.sound.sampled.DataLine

DataLine.Info

Краткое описание методов

Модификатор и тип Метод Описание
void open(AudioFormat format)
Открывает линию с указанным форматом, заставляя линию получить все необходимые системные ресурсы и стать работоспособной.
void open(AudioFormat format, int bufferSize)
Открывает линию с указанным форматом и запрошенным размером буфера, заставляя линию получить все необходимые системные ресурсы и стать работоспособной.
int read(byte[] b, int off, int len)
Считывает аудиоданные из буфера ввода линии данных.

Методы, объявленные в интерфейсе 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

Подробное описание методов

open

void open(AudioFormat format, int bufferSize) throws LineUnavailableException
Открывает линию с указанным форматом и запрошенным размером буфера, заставляя линию получить все необходимые системные ресурсы и стать работоспособной.

Размер буфера указан в байтах, но должен представлять целое число кадров образцов. Вызов этого метода с запрошенным размером буфера, не удовлетворяющим этому требованию, может привести к IllegalArgumentException. Фактический размер буфера открытой линии может отличаться от запрошенного размера буфера. Значение, фактически установленное, может быть запрошено путём последующего вызова DataLine.getBufferSize()

Если эта операция выполнена успешно, линия отмечается как открытая, и событие OPEN отправляется слушателям линии.

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

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

Параметры:
format - желаемый формат аудио
bufferSize - желаемый размер буфера в байтах
Исключения:
LineUnavailableException - если линия не может быть открыта из-за ограничений ресурсов
IllegalArgumentException - если размер буфера не представляет целое число кадров образцов или если format не полностью указан или недействителен
IllegalStateException - если линия уже открыта
SecurityException - если линия не может быть открыта из-за ограничений безопасности
См. также:
  • open(AudioFormat)
  • Line.open()
  • Line.close()
  • Line.isOpen()
  • LineEvent

open

void open(AudioFormat format) throws LineUnavailableException
Открывает линию с указанным форматом, заставляя линию получить все необходимые системные ресурсы и стать работоспособной.

Реализация выбирает размер буфера, который измеряется в байтах, но охватывает целое число кадров образцов. Размер буфера, выбранный системой, может быть запрошен путём последующего вызова DataLine.getBufferSize()

Если эта операция выполнена успешно, линия отмечается как открытая, и событие OPEN отправляется слушателям линии.

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

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

Параметры:
format - желаемый формат аудио
Исключения:
LineUnavailableException - если линия не может быть открыта из-за ограничений ресурсов
IllegalArgumentException - если format не полностью указан или недействителен
IllegalStateException - если линия уже открыта
SecurityException - если линия не может быть открыта из-за ограничений безопасности
См. также:
  • open(AudioFormat, int)
  • Line.open()
  • Line.close()
  • Line.isOpen()
  • LineEvent

read

int read(byte[] b, int off, int len)
Считывает аудиоданные из буфера ввода линии данных. Запрошенное количество байтов считывается в указанный массив, начиная с указанного смещения в массиве в байтах. Этот метод блокируется до тех пор, пока не будет считано запрошенное количество данных. Однако, если линия данных закрыта, остановлена, опустошена или очищена, прежде чем будет считано запрошенное количество, метод больше не блокируется, а возвращает количество байтов, прочитанных до сих пор.

Количество байтов, которые можно прочитать без блокировки, можно определить с помощью метода available интерфейса DataLine. (Хотя гарантируется, что это количество байтов можно прочитать без блокировки, нет гарантии, что попытки считать дополнительные данные заблокируют.)

Количество байтов для чтения должно представлять целое число кадров образцов, таким образом:

[ bytes read ] % [frame size in bytes ] == 0

Возвращаемое значение всегда будет удовлетворять этому требованию. Запрос на чтение количества байтов, представляющих нецелое число кадров образцов, не может быть выполнен и может привести к исключению IllegalArgumentException.

Параметры:
b - массив байтов, который будет содержать запрошенные входные данные, когда этот метод вернётся
off - смещение от начала массива в байтах
len - запрошенное количество байтов для чтения
Возвращает:
количество фактически прочитанных байтов
Исключения:
IllegalArgumentException - если запрошенное количество байтов не представляет целое число кадров образцов или если len отрицательно
ArrayIndexOutOfBoundsException - если off отрицательно или off+len больше, чем длина массива b
См. также:
  • SourceDataLine.write(byte[], int, int)
  • DataLine.available()

© 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/TargetDataLine.html

Spec-Zone.ru

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