Класс AudioFormat
public class AudioFormat extends Object
AudioFormat — это класс, определяющий конкретное расположение данных в потоке звука. Изучая информацию, хранящуюся в формате аудио, вы можете понять, как интерпретировать биты в двоичных звуковых данных. Каждый поток данных имеет связанный с ним формат аудио. Формат аудио для источника (воспроизведения) потока данных указывает, какой тип данных поток данных ожидает получить для вывода. Для целевого (записи) потока данных формат аудио задаёт тип данных, которые можно считать из потока.
Файлы звука также имеют форматы аудио, конечно. Класс AudioFileFormat инкапсулирует AudioFormat помимо другой, специфичной для файла информации. Аналогично, у AudioInputStream есть AudioFormat.
Класс AudioFormat поддерживает ряд распространённых кодировок аудиофайлов, включая импульсно-кодовую модуляцию (PCM), кодирование mu-law и a-law. Эти методы кодирования предопределены, но поставщики услуг могут создавать новые типы кодирования. Кодировка, используемая конкретным форматом, называется через поле encoding.
В дополнение к кодированию, формат аудио включает другие свойства, которые ещё более точно определяют расположение данных. Это включает число каналов, частоту дискретизации, размер выборки, порядок байтов, частоту кадров и размер кадра. Звуки могут иметь различное число аудиоканалов: один для моно, два для стерео. Частота дискретизации измеряет, сколько «моментальных снимков» (выборок) звукового давления принимается в секунду на каждый канал. (Если звук стерео, а не моно, на каждом мгновении времени измеряются две выборки: одна для левого канала и другая для правого канала; однако частота дискретизации по-прежнему измеряет число на канал, поэтому скорость одинакова независимо от числа каналов. Это стандартное использование термина.) Размер выборки указывает, сколько битов используется для хранения каждого моментального снимка; типичные значения — 8 и 16. Для 16-битных выборок (или любого другого размера выборки, большего байта), порядок байтов важен; байты в каждой выборке организованы либо в стиле «little-endian», либо в стиле «big-endian». Для кодировок, таких как 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 |
Указывает, хранятся ли аудиоданные в порядке big-endian или little-endian. |
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() |
Указывает, хранятся ли аудиоданные в порядке байтов big-endian или little-endian. |
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.- Parameters:
-
encoding- метод кодирования аудио -
sampleRate- количество выборок в секунду -
sampleSizeInBits- количество битов в каждой выборке -
channels- количество каналов (1 для моно, 2 для стерео и т. д.) -
frameSize- количество байтов в каждом кадре -
frameRate- количество кадров в секунду -
bigEndian- указывает, хранятся ли данные одной выборки в порядке байтов big-endian (falseозначает little-endian)
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.- Parameters:
-
encoding- метод кодирования аудио -
sampleRate- количество выборок в секунду -
sampleSizeInBits- количество битов в каждой выборке -
channels- количество каналов (1 для моно, 2 для стерео и т. д.) -
frameSize- количество байтов в каждом кадре -
frameRate- количество кадров в секунду -
bigEndian- указывает, хранятся ли данные одной выборки в порядке байтов big-endian (falseозначает little-endian) -
properties- объектMap<String, Object>содержащий свойства формата - Since:
- 1.5
AudioFormat
public AudioFormat(float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndian)
AudioFormat с линейным PCM кодированием и заданными параметрами. Размер кадра устанавливается в количество байтов, необходимое для размещения одной выборки с каждого канала, а частота кадров устанавливается равной частоте дискретизации.- Parameters:
-
sampleRate- количество выборок в секунду -
sampleSizeInBits- количество битов в каждой выборке -
channels- количество каналов (1 для моно, 2 для стерео и т. д.) -
signed- указывает, являются ли данные знаковыми или беззнаковыми -
bigEndian- указывает, хранятся ли данные одной выборки в порядке байтов big-endian (falseозначает little-endian)
Подробное описание методов
getEncoding
public AudioFormat.Encoding getEncoding()
- Returns:
- тип кодирования
- See Also:
getSampleRate
public float getSampleRate()
AudioFormat используется для запросов (например, AudioSystem.isConversionSupported) или возможностей (например, DataLine.Info.getFormats), значение AudioSystem.NOT_SPECIFIED означает, что любая частота дискретизации приемлема. AudioSystem.NOT_SPECIFIED также возвращается, если частота дискретизации не определена для этого аудиоформата.- Returns:
- количество выборок в секунду, или
AudioSystem.NOT_SPECIFIED - See Also:
getSampleSizeInBits
public int getSampleSizeInBits()
AudioFormat используется для запросов (например, AudioSystem.isConversionSupported) или возможностей (например, DataLine.Info.getFormats), значение AudioSystem.NOT_SPECIFIED означает, что любой размер выборки приемлем. AudioSystem.NOT_SPECIFIED также возвращается, если размер выборки не определён для этого аудиоформата.- Returns:
- количество битов в каждой выборке, или
AudioSystem.NOT_SPECIFIED - See Also:
getChannels
public int getChannels()
AudioFormat используется для запросов (например, AudioSystem.isConversionSupported) или возможностей (например, DataLine.Info.getFormats), значение AudioSystem.NOT_SPECIFIED означает, что любое (положительное) количество каналов приемлемо.- Returns:
- Количество каналов (1 для моно, 2 для стерео и т. д.), или
AudioSystem.NOT_SPECIFIED - See Also:
getFrameSize
public int getFrameSize()
AudioFormat используется для запросов (например, AudioSystem.isConversionSupported) или возможностей (например, DataLine.Info.getFormats), значение AudioSystem.NOT_SPECIFIED означает, что любой размер кадра приемлем. AudioSystem.NOT_SPECIFIED также возвращается, если размер кадра не определён для этого аудиоформата.- Returns:
- количество байтов на кадр, или
AudioSystem.NOT_SPECIFIED - See Also:
getFrameRate
public float getFrameRate()
AudioFormat используется для запросов (например, AudioSystem.isConversionSupported) или возможностей (например, DataLine.Info.getFormats), значение AudioSystem.NOT_SPECIFIED означает, что любая частота кадров приемлема. AudioSystem.NOT_SPECIFIED также возвращается, если частота кадров не определена для этого аудиоформата.- Returns:
- количество кадров в секунду, или
AudioSystem.NOT_SPECIFIED - See Also:
isBigEndian
public boolean isBigEndian()
- Returns:
-
trueесли данные хранятся в формате big-endian,falseесли little-endian
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. Порядок байтов (big-endian или little-endian) должен быть одинаковым, если размер выборки больше одного байта.- Параметры:
-
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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/sound/sampled/AudioFormat.html