Spec-Zone.ru › OpenJDK 24

Интерфейс 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()
Останавливает линию.

Методы, объявленные в интерфейсе javax.sound.sampled.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(javax.sound.sampled.LineListener)
  • Line.removeLineListener(javax.sound.sampled.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

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

Spec-Zone.ru

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