Класс AudioFormat
public class AudioFormat extends Object
AudioFormat — это класс, задающий определённую организацию данных в звуковом потоке. Изучив информацию, хранящуюся в аудиоформате, можно определить, как интерпретировать биты двоичных звуковых данных. Каждая линия данных связана с аудиоформатом своего потока данных. Аудиоформат исходной линии данных (воспроизведения) указывает, какие данные линия ожидает получить для вывода. Для целевой линии данных (захвата) аудиоформат задаёт тип данных, которые можно считывать из линии.
Разумеется, аудиоформаты есть и у звуковых файлов. Класс AudioFileFormat инкапсулирует AudioFormat наряду с другой информацией, специфичной для файла. Аналогичным образом, AudioInputStream имеет AudioFormat.
Класс AudioFormat поддерживает ряд распространённых методов кодирования звуковых файлов, включая импульсно-кодовую модуляцию (PCM), кодирование mu-law и кодирование a-law. Эти методы кодирования предопределены, но поставщики служб могут создавать новые типы кодирования. Кодирование, используемое конкретным форматом, задаётся его полем encoding.
Помимо кодирования, аудиоформат включает другие свойства, которые более точно задают организацию данных. К ним относятся количество каналов, частота дискретизации, размер отсчёта, порядок байтов, частота кадров и размер кадра. Звук может содержать разное количество аудиоканалов: один — для моно, два — для стерео. Частота дискретизации показывает, сколько «снимков» (отсчётов) звукового давления снимается в секунду для каждого канала. (Если звук стереофонический, а не монофонический, в каждый момент времени фактически измеряются два отсчёта: один для левого канала и другой для правого; однако частота дискретизации по-прежнему указывает количество отсчётов на канал, поэтому она не зависит от количества каналов. Именно так этот термин используется в стандартном смысле.) Размер отсчёта показывает, сколько бит используется для хранения каждого снимка; типичные значения — 8 и 16. Для 16-битных отсчётов (или отсчётов любого размера, превышающего один байт) важен порядок байтов: байты в каждом отсчёте располагаются в порядке от младшего к старшему или от старшего к младшему. Для таких кодирований, как PCM, кадр состоит из набора отсчётов для всех каналов в определённый момент времени, поэтому размер кадра (в байтах) всегда равен размеру отсчёта (в байтах), умноженному на количество каналов. Однако при некоторых других видах кодирования кадр может содержать пакет сжатых данных для целой последовательности отсчётов, а также дополнительные данные, не являющиеся отсчётами. Для таких кодирований частота дискретизации и размер отсчёта относятся к данным после их декодирования в PCM и поэтому полностью отличаются от частоты кадров и размера кадра.
Объект AudioFormat может включать набор свойств. Свойство представляет собой пару «ключ — значение»: ключ имеет тип String, а связанное с ним значение свойства — произвольный объект. Свойства задают дополнительные характеристики формата, например битрейт для сжатых форматов. Свойства используются главным образом для передачи дополнительных сведений об аудиоформате поставщикам служб и от них. Поэтому метод matches(AudioFormat) игнорирует свойства. Однако методы, зависящие от установленных поставщиков служб, например (AudioFormat, AudioFormat)
isConversionSupported, могут учитывать свойства в зависимости от реализации соответствующего поставщика службы.
В следующей таблице перечислены некоторые распространённые свойства, которые поставщикам служб следует использовать, если применимо:
| Ключ свойства | Тип значения | Описание |
|---|---|---|
| "bitrate" |
Integer |
средний битрейт в битах в секунду |
| "vbr" |
Boolean |
true, если файл закодирован с переменным битрейтом (VBR) |
| "quality" |
Integer |
качество кодирования/преобразования, 1..100 |
Поставщикам служб (плагинов) рекомендуется изучать другие уже установленные свойства в сторонних плагинах и придерживаться тех же соглашений.
- С версии:
- 1.3
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static class |
AudioFormat.Encoding |
Класс Encoding задаёт конкретный тип представления данных, используемый для аудиопотока. |
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected boolean |
bigEndian |
Указывает, хранятся ли аудиоданные в порядке от старшего байта к младшему или от младшего к старшему. |
protected int |
channels |
Количество аудиоканалов в этом формате (1 для моно, 2 для стерео). |
protected AudioFormat.Encoding |
encoding |
Метод кодирования аудиоданных, используемый этим форматом. |
protected float |
frameRate |
Количество кадров, воспроизводимых или записываемых в секунду для звуков в этом формате. |
protected int |
frameSize |
Количество байтов в каждом кадре звука в этом формате. |
protected float |
sampleRate |
Количество отсчётов, воспроизводимых или записываемых в секунду для звуков в этом формате. |
protected int |
sampleSizeInBits |
Количество бит в каждом отсчёте звука в этом формате. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
AudioFormat |
Создаёт AudioFormat с линейным кодированием PCM и заданными параметрами. |
AudioFormat |
Создаёт AudioFormat с заданными параметрами. |
AudioFormat |
Создаёт AudioFormat с заданными параметрами. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
int |
getChannels() |
Возвращает количество каналов. |
AudioFormat.Encoding |
getEncoding() |
Возвращает тип кодирования звуков в этом формате. |
float |
getFrameRate() |
Возвращает частоту кадров в кадрах в секунду. |
int |
getFrameSize() |
Возвращает размер кадра в байтах. |
Object |
getProperty |
Возвращает значение свойства, заданного ключом. |
float |
getSampleRate() |
Возвращает частоту дискретизации. |
int |
getSampleSizeInBits() |
Возвращает размер отсчёта. |
boolean |
isBigEndian() |
Указывает, хранятся ли аудиоданные в порядке байтов от старшего к младшему или от младшего к старшему. |
boolean |
matches |
Указывает, соответствует ли этот формат указанному формату. |
Map |
properties() |
Возвращает неизменяемую карту свойств. |
String |
toString() |
Возвращает строку с описанием аудиоформата, например: "PCM SIGNED 22050 Hz 16 bit mono big-endian". |
Подробное описание полей
encoding
protected AudioFormat.Encoding encoding
sampleRate
protected float sampleRate
sampleSizeInBits
protected int sampleSizeInBits
channels
protected int channels
frameSize
protected int frameSize
frameRate
protected float frameRate
bigEndian
protected boolean bigEndian
Подробное описание конструкторов
AudioFormat
public AudioFormat(AudioFormat.Encoding encoding, float sampleRate, int sampleSizeInBits, int channels, int frameSize, float frameRate, boolean bigEndian)
AudioFormat с заданными параметрами. Кодирование задаёт соглашение, используемое для представления данных. Остальные параметры подробнее описаны в class description.- Параметры:
-
encoding— метод кодирования аудио -
sampleRate— количество отсчётов в секунду -
sampleSizeInBits— количество бит в каждом отсчёте -
channels— количество каналов (1 для моно, 2 для стерео и т. д.) -
frameSize— количество байтов в каждом кадре -
frameRate— количество кадров в секунду -
bigEndian— указывает, хранятся ли данные одного отсчёта в порядке байтов от старшего к младшему (falseозначает порядок от младшего к старшему)
AudioFormat
public AudioFormat(AudioFormat.Encoding encoding, float sampleRate, int sampleSizeInBits, int channels, int frameSize, float frameRate, boolean bigEndian, Map<String,Object> properties)
AudioFormat с заданными параметрами. Кодирование задаёт соглашение, используемое для представления данных. Остальные параметры подробнее описаны в class description.- Параметры:
-
encoding— метод кодирования аудио -
sampleRate— количество отсчётов в секунду -
sampleSizeInBits— количество бит в каждом отсчёте -
channels— количество каналов (1 для моно, 2 для стерео и т. д.) -
frameSize— количество байтов в каждом кадре -
frameRate— количество кадров в секунду -
bigEndian— указывает, хранятся ли данные одного отсчёта в порядке байтов от старшего к младшему (falseозначает порядок от младшего к старшему) -
properties— объектMap<String, Object>, содержащий свойства формата - С версии:
- 1.5
AudioFormat
public AudioFormat(float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndian)
AudioFormat с линейным кодированием PCM и заданными параметрами. Размер кадра устанавливается равным количеству байтов, необходимому для размещения одного отсчёта каждого канала, а частота кадров — равной частоте дискретизации.- Параметры:
-
sampleRate— количество отсчётов в секунду -
sampleSizeInBits— количество бит в каждом отсчёте -
channels— количество каналов (1 для моно, 2 для стерео и т. д.) -
signed— указывает, являются ли данные знаковыми или беззнаковыми -
bigEndian— указывает, хранятся ли данные одного отсчёта в порядке байтов от старшего к младшему (falseозначает порядок от младшего к старшему)
Подробное описание методов
getEncoding
public AudioFormat.Encoding getEncoding()
- Возвращает:
- тип кодирования
- См. также:
getSampleRate
public float getSampleRate()
AudioFormat используется для запросов (например, AudioSystem.isConversionSupported) или описания возможностей (например, DataLine.Info.getFormats), частота дискретизации AudioSystem.NOT_SPECIFIED означает, что допустима любая частота дискретизации. AudioSystem.NOT_SPECIFIED также возвращается, если частота дискретизации не определена для этого аудиоформата.- Возвращает:
- количество отсчётов в секунду или
AudioSystem.NOT_SPECIFIED - См. также:
getSampleSizeInBits
public int getSampleSizeInBits()
AudioFormat используется для запросов (например, AudioSystem.isConversionSupported) или описания возможностей (например, DataLine.Info.getFormats), размер отсчёта AudioSystem.NOT_SPECIFIED означает, что допустим любой размер отсчёта. AudioSystem.NOT_SPECIFIED также возвращается, если размер отсчёта не определён для этого аудиоформата.- Возвращает:
- количество бит в каждом отсчёте или
AudioSystem.NOT_SPECIFIED - См. также:
getChannels
public int getChannels()
AudioFormat используется для запросов (например, AudioSystem.isConversionSupported) или описания возможностей (например, DataLine.Info.getFormats), возвращаемое значение AudioSystem.NOT_SPECIFIED означает, что допустимо любое (положительное) количество каналов.- Возвращает:
- количество каналов (1 для моно, 2 для стерео и т. д.) или
AudioSystem.NOT_SPECIFIED - См. также:
getFrameSize
public int getFrameSize()
AudioFormat используется для запросов (например, AudioSystem.isConversionSupported) или описания возможностей (например, DataLine.Info.getFormats), размер кадра AudioSystem.NOT_SPECIFIED означает, что допустим любой размер кадра. AudioSystem.NOT_SPECIFIED также возвращается, если размер кадра не определён для этого аудиоформата.- Возвращает:
- количество байтов на кадр или
AudioSystem.NOT_SPECIFIED - См. также:
getFrameRate
public float getFrameRate()
AudioFormat используется для запросов (например, AudioSystem.isConversionSupported) или описания возможностей (например, DataLine.Info.getFormats), частота кадров AudioSystem.NOT_SPECIFIED означает, что допустима любая частота кадров. AudioSystem.NOT_SPECIFIED также возвращается, если частота кадров не определена для этого аудиоформата.- Возвращает:
- количество кадров в секунду или
AudioSystem.NOT_SPECIFIED - См. также:
isBigEndian
public boolean isBigEndian()
- Возвращает:
-
true, если данные хранятся в порядке байтов от старшего к младшему;false, если от младшего к старшему
properties
public Map<String,Object> properties()
class description.- Возвращает:
- объект
Map<String, Object>, содержащий все свойства. Если свойства не распознаны, возвращается пустая карта. - С версии:
- 1.5
- См. также:
getProperty
public Object getProperty(String key)
class description. Если указанное свойство не определено для конкретного формата файла, этот метод возвращает null.
- Параметры:
-
key— ключ требуемого свойства - Возвращает:
- значение свойства с указанным ключом или
null, если свойство не существует - С версии:
- 1.5
- См. также:
matches
public boolean matches(AudioFormat format)
AudioSystem.NOT_SPECIFIED. Если размер отсчёта превышает один байт, порядок байтов (от старшего к младшему или от младшего к старшему) должен совпадать.- Параметры:
-
format— формат для проверки соответствия - Возвращает:
-
true, если этот формат соответствует указанному; в противном случае —false
toString
© 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/AudioFormat.html