Интерфейс TargetDataLine
- Все суперинтерфейсы:
AutoCloseable, DataLine, Line
public interface TargetDataLine extends DataLine
DataLine, из которой можно считывать аудиоданные. Наиболее распространённый пример — линия данных, получающая данные с устройства захвата аудио. (Устройство реализовано как микшер, записывающий данные в линию данных-приёмник.) Обратите внимание, что соглашение об именовании этого интерфейса отражает связь между линией и её микшером. С точки зрения приложения линия данных-приёмник может выступать источником аудиоданных.
Линию данных-приёмник можно получить из микшера, вызвав метод getLine интерфейса Mixer с соответствующим объектом DataLine.Info.
Интерфейс TargetDataLine предоставляет метод для считывания захваченных данных из буфера линии данных-приёмника. Приложения, записывающие аудио, должны считывать данные из линии данных-приёмника достаточно быстро, чтобы буфер не переполнялся: переполнение может привести к разрывам в захваченных данных, воспринимаемым как щелчки. Приложения могут использовать метод available, определённый в интерфейсе DataLine, чтобы определить объём данных, находящихся в данный момент в очереди буфера линии данных. Если буфер переполнится, самые старые данные в очереди будут отброшены и заменены новыми.
- Начиная с:
- 1.3
- См. также:
Краткое описание вложенных классов
Вложенные классы и интерфейсы, объявленные в интерфейсе DataLine
DataLine.Info
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
open |
Открывает линию с указанным форматом, в результате чего линия получает все необходимые системные ресурсы и становится доступной для работы. |
void |
open |
Открывает линию с указанным форматом и запрошенным размером буфера, в результате чего линия получает все необходимые системные ресурсы и становится доступной для работы. |
int |
read |
Считывает аудиоданные из входного буфера линии данных. |
Методы, объявленные в интерфейсе DataLine
available, drain, flush, getBufferSize, getFormat, getFramePosition, getLevel, getLongFramePosition, getMicrosecondPosition, isActive, isRunning, start, stop
Методы, объявленные в интерфейсе 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— если линия уже открыта - См. также:
open
void open(AudioFormat format) throws LineUnavailableException
Реализация выбирает размер буфера, который измеряется в байтах, но соответствует целому числу фреймов сэмплов. Выбранный системой размер буфера можно узнать, впоследствии вызвав DataLine.getBufferSize()
Если эта операция выполнена успешно, линия помечается как открытая, а её слушателям отправляется событие OPEN.
Вызов этого метода для уже открытой линии является недопустимым и может привести к IllegalStateException.
Некоторые линии после закрытия нельзя открыть повторно. Попытки повторно открыть такую линию всегда приводят к LineUnavailableException.
- Параметры:
-
format— требуемый аудиоформат - Исключения:
-
LineUnavailableException— если линию невозможно открыть из-за ограничений ресурсов -
IllegalArgumentException— еслиformatзадан не полностью или имеет недопустимое значение -
IllegalStateException— если линия уже открыта - См. также:
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 - См. также:
© 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/TargetDataLine.html