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