Интерфейс SourceDataLine
- Все суперинтерфейсы:
-
AutoCloseable,DataLine,Line
public interface SourceDataLine extends DataLine
Обратите внимание, что соглашение об именовании для этого интерфейса отражает отношение между линией и ее миксером. С точки зрения приложения, строка данных источника может служить целевым объектом для аудиоданных.
Строку данных источника можно получить из миксера, вызвав метод getLine интерфейса Mixer с соответствующим объектом DataLine.Info.
Интерфейс SourceDataLine предоставляет метод для записи аудиоданных в буфер строки данных. Приложения, которые воспроизводят или смешивают звук, должны записывать данные в строку данных источника достаточно быстро, чтобы предотвратить недополнение буфера (опустошение), что может привести к разрывам в звуке, воспринимаемым как щелчки. Приложения могут использовать метод available, определенный в интерфейсе DataLine, для определения количества данных, в настоящее время находящихся в очереди в буфере строки данных. Количество данных, которое можно записать в буфер без блокировки, равно разнице между размером буфера и количеством данных в очереди. Если доставка аудиовывода прекращается из-за недополения, генерируется событие STOP. Событие START генерируется при возобновлении аудиовывода.
- С момента:
- 1.3
- См. также:
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в интерфейсе javax.sound.sampled.DataLine
DataLine.Info
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
open |
Открывает линию с указанным форматом, заставляя линию приобрести все необходимые системные ресурсы и стать рабочей. |
void |
open |
Открывает линию с указанным форматом и предлагаемым размером буфера, заставляя линию приобрести все необходимые системные ресурсы и стать рабочей. |
int |
write |
Записывает аудиоданные в миксер через эту линию данных источника. |
Методы, объявленные в интерфейсе 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- если линия уже открыта - См. также:
open
void open(AudioFormat format) throws LineUnavailableException
Реализация выбирает размер буфера, который измеряется в байтах, но охватывает целое число сэмпловых кадров. Размер буфера, выбранный системой, можно запросить, вызвав DataLine.getBufferSize().
Если эта операция завершится успешно, линия помечается как открытая, и для слушателей линии отправляется событие OPEN.
Вызов этого метода для линии, которая уже открыта, является незаконным и может привести к IllegalStateException.
Обратите внимание, что некоторые линии после закрытия не могут быть повторно открыты. Попытки повторного открытия такой линии всегда приведут к LineUnavailableException.
- Параметры:
-
format- желаемый формат аудио - Исключения:
-
LineUnavailableException- если линию нельзя открыть из-за ограничений ресурсов -
IllegalArgumentException- еслиformatне полностью указан или неверен -
IllegalStateException- если линия уже открыта - См. также:
write
int write(byte[] b, int off, int len)
available), этот метод блокируется до тех пор, пока не будет записано запрошенное количество данных. Это относится даже если запрошенное количество данных для записи больше размера буфера линии. Однако, если линия данных закрыта, остановлена или очищена, прежде чем будет записано запрошенное количество, метод больше не блокируется, а возвращает количество байтов, записанных до этого момента. Количество байтов, которые можно записать без блокировки, можно определить с помощью метода available интерфейса DataLine. (Хотя гарантируется, что это количество байтов можно записать без блокировки, нет гарантии, что попытки записи дополнительных данных приведут к блокировке.)
Количество байтов для записи должно представлять собой целое число сэмпловых кадров, такое что:
[ bytes written ] % [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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/sound/sampled/SourceDataLine.html