Spec-Zone.ru › OpenJDK 25

Интерфейс DataLine

Все суперинтерфейсы:
AutoCloseable, Line
Все известные подинтерфейсы:
Clip, SourceDataLine, TargetDataLine
public interface DataLine extends Line
DataLine добавляет к своему суперинтерфейсу, Line, функциональность, связанную с мультимедиа. Эта функциональность включает методы управления воспроизведением, которые запускают, останавливают, опустошают и очищают аудиоданные, проходящие через линию. Линия данных также может сообщать текущую позицию, громкость и аудиоформат мультимедиа. Линии данных используются для вывода звука с помощью подинтерфейсов SourceDataLine или Clip, которые позволяют приложению записывать данные. Аналогично, ввод аудио обрабатывается подинтерфейсом TargetDataLine, который позволяет считывать данные.

Линия данных имеет внутренний буфер, в котором ставятся в очередь входящие или исходящие аудиоданные. Метод drain() блокирует выполнение до тех пор, пока внутренний буфер не опустеет, обычно после обработки всех данных в очереди. Метод flush() удаляет из внутреннего буфера все данные, находящиеся в очереди.

Линия данных генерирует события START и STOP каждый раз, когда начинает или прекращает активное воспроизведение или захват данных. Эти события могут генерироваться в ответ на определённые запросы или в результате менее прямых изменений состояния. Например, если для неактивной линии данных вызывается start() и данные доступны для захвата или воспроизведения, вскоре будет сгенерировано событие START — в момент фактического начала воспроизведения или захвата данных. Если же поток данных к активной линии данных ограничен настолько, что при воспроизведении данных возникает пауза, генерируется событие STOP.

Микшеры часто поддерживают синхронизированное управление несколькими линиями данных. Синхронизацию можно настроить с помощью метода synchronize интерфейса Mixer. Более подробное описание приведено в документации интерфейса Mixer.

Начиная с:
1.3
См. также:
  • LineEvent

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

Модификатор и тип Интерфейс Описание
static class  DataLine.Info
Помимо информации о классе, унаследованной от суперкласса, DataLine.Info предоставляет дополнительные сведения, относящиеся к линиям данных.

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

Модификатор и тип Метод Описание
int available()
Возвращает количество байтов данных, доступных в данный момент приложению для обработки во внутреннем буфере линии данных.
void drain()
Опустошает очередь данных линии, продолжая ввод-вывод до тех пор, пока внутренний буфер линии данных не будет очищен.
void flush()
Удаляет данные из очереди линии.
int getBufferSize()
Возвращает максимальное количество байтов данных, помещающихся во внутреннем буфере линии данных.
AudioFormat getFormat()
Возвращает текущий формат (кодировку, частоту дискретизации, количество каналов и т. д.) аудиоданных линии данных.
int getFramePosition()
Возвращает текущую позицию в аудиоданных в отсчётных кадрах.
float getLevel()
Возвращает текущий уровень громкости линии.
long getLongFramePosition()
Возвращает текущую позицию в аудиоданных в отсчётных кадрах.
long getMicrosecondPosition()
Возвращает текущую позицию в аудиоданных в микросекундах.
boolean isActive()
Показывает, выполняет ли линия активный ввод-вывод (например, воспроизведение или захват).
boolean isRunning()
Показывает, запущена ли линия.
void start()
Позволяет линии выполнять ввод-вывод данных.
void stop()
Останавливает линию.

Методы, объявленные в интерфейсе Line

addLineListener, close, getControl, getControls, getLineInfo, isControlSupported, isOpen, open, removeLineListener

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

drain

void drain()
Опустошает очередь данных линии, продолжая ввод-вывод до тех пор, пока внутренний буфер линии данных не будет очищен. Этот метод блокирует выполнение до завершения очистки буфера. Поскольку этот метод блокирующий, использовать его следует с осторожностью. Если метод drain() вызван для остановленной линии, в очереди которой есть данные, он будет блокировать выполнение до тех пор, пока линия не запустится и очередь данных не опустеет. Если метод drain() вызван одним потоком, а другой поток продолжает заполнять очередь данных, операция не завершится. Этот метод всегда возвращает управление, когда линия данных закрыта.
См. также:
  • flush()

flush

void flush()
Удаляет данные из очереди линии. Удалённые данные отбрасываются. В некоторых случаях удалить все данные из очереди невозможно. Например, микшер может удалить данные из буфера определённой входной линии, но уже обработанные, однако ещё не воспроизведённые данные в выходном буфере (результат микширования) всё равно будут воспроизведены. Этот метод можно вызвать после приостановки линии (обычный случай), если при возобновлении воспроизведения или захвата нужно пропустить устаревшие данные. (Вызов этого метода для незапущенной линии допустим, однако при вызове для активной линии, вероятно, возникнет разрыв в данных, который может проявиться в виде щелчка.)
См. также:
  • stop()
  • drain()

start

void start()
Позволяет линии выполнять ввод-вывод данных. Если линия уже запущена, вызов этого метода ничего не делает. Если данные в буфере не были удалены, линия возобновляет ввод-вывод с первого кадра, который не был обработан на момент остановки линии. При начале захвата или воспроизведения аудио генерируется событие START.
См. также:
  • stop()
  • isRunning()
  • LineEvent

stop

void stop()
Останавливает линию. Остановленная линия должна прекратить ввод-вывод. Однако если линия открыта и запущена, она должна сохранять ресурсы, необходимые для возобновления работы. Остановленная линия должна сохранять аудиоданные в своём буфере, а не отбрасывать их, чтобы после возобновления ввод-вывод, по возможности, продолжался с того места, где он был прерван. (Это, разумеется, не гарантирует полного отсутствия разрывов за пределами текущего буфера: если линия остаётся остановленной слишком долго, входные или выходные отсчёты могут быть потеряны.) При необходимости сохранённые данные можно удалить, вызвав метод flush. При остановке захвата или воспроизведения аудио генерируется событие STOP.
См. также:
  • start()
  • isRunning()
  • flush()
  • LineEvent

isRunning

boolean isRunning()
Показывает, запущена ли линия. По умолчанию значение равно false. Открытая линия начинает работать, когда в ответ на вызов метода start представлены первые данные, и продолжает работать, пока их представление не прекратится в ответ на вызов stop или не завершится воспроизведение.
Возвращает:
true, если линия запущена; в противном случае — false
См. также:
  • start()
  • stop()

isActive

boolean isActive()
Показывает, выполняет ли линия активный ввод-вывод (например, воспроизведение или захват). Когда неактивная линия становится активной, она отправляет своим слушателям событие START. Аналогично, когда активная линия становится неактивной, она отправляет событие STOP.
Возвращает:
true, если линия активно захватывает или воспроизводит звук; в противном случае — false
См. также:
  • Line.isOpen()
  • Line.addLineListener(LineListener)
  • Line.removeLineListener(LineListener)
  • LineEvent
  • LineListener

getFormat

AudioFormat getFormat()
Возвращает текущий формат (кодировку, частоту дискретизации, количество каналов и т. д.) аудиоданных линии данных.

Если линия не открыта и никогда не открывалась, возвращается формат по умолчанию. Формат по умолчанию — это аудиоформат, зависящий от реализации. Если объект DataLine.Info, использованный для получения этого DataLine, задаёт хотя бы один полностью определённый аудиоформат, последний из них будет использоваться как формат по умолчанию. Открытие линии с определённым аудиоформатом (например, SourceDataLine.open(AudioFormat)) переопределяет формат по умолчанию.

Возвращает:
текущий формат аудиоданных
См. также:
  • AudioFormat

getBufferSize

int getBufferSize()
Возвращает максимальное количество байтов данных, помещающихся во внутреннем буфере линии данных. Для линии источника это размер буфера, в который можно записывать данные. Для линии приёмника это размер буфера, из которого можно считывать данные. Обратите внимание: единица измерения — байт, но размер всегда соответствует целому числу отсчётных кадров аудиоданных.
Возвращает:
размер буфера в байтах

available

int available()
Возвращает количество байтов данных, доступных в данный момент приложению для обработки во внутреннем буфере линии данных. Для линии источника это объём данных, который можно записать в буфер без блокировки. Для линии приёмника это объём данных, доступных приложению для чтения. Для клипа это значение всегда равно 0, поскольку аудиоданные загружаются в буфер при открытии клипа и остаются неизменными до его закрытия.

Обратите внимание: единица измерения — байт, но размер всегда соответствует целому числу отсчётных кадров аудиоданных.

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

Возвращает:
объём доступных данных в байтах

getFramePosition

int getFramePosition()
Возвращает текущую позицию в аудиоданных в отсчётных кадрах. Позиция кадра показывает количество отсчётных кадров, захваченных линией или воспроизведённых ею с момента открытия. После 2^31 кадров возвращаемое значение циклически перейдёт к началу диапазона. Рекомендуется вместо этого использовать getLongFramePosition.
Возвращает:
количество кадров, обработанных с момента открытия линии
См. также:
  • getLongFramePosition()

getLongFramePosition

long getLongFramePosition()
Возвращает текущую позицию в аудиоданных в отсчётных кадрах. Позиция кадра показывает количество отсчётных кадров, захваченных линией или воспроизведённых ею с момента открытия.
Возвращает:
количество кадров, обработанных с момента открытия линии
Начиная с:
1.5

getMicrosecondPosition

long getMicrosecondPosition()
Возвращает текущую позицию в аудиоданных в микросекундах. Позиция в микросекундах показывает время, соответствующее количеству отсчётных кадров, захваченных линией или воспроизведённых ею с момента открытия. Точность не гарантируется. Например, реализация может вычислять позицию в микросекундах по текущей позиции кадра и частоте отсчётных кадров аудио. В этом случае точность в микросекундах будет ограничена количеством микросекунд на один отсчётный кадр.
Возвращает:
количество микросекунд обработанных данных с момента открытия линии

getLevel

float getLevel()
Возвращает текущий уровень громкости линии. Этот уровень характеризует текущую амплитуду сигнала и не должен смешиваться с текущим значением регулятора усиления. Диапазон — от 0.0 (тишина) до 1.0 (максимально возможная амплитуда звуковой волны). Единица измерения — линейная амплитуда, а не децибелы.
Возвращает:
текущую амплитуду сигнала в этой линии или AudioSystem.NOT_SPECIFIED

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, где приведены более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

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

Spec-Zone.ru

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