Класс AudioFormat
public class AudioFormat extends Object
AudioFormat — это класс, определяющий конкретную организацию данных в потоке звука. Исследуя информацию, хранящуюся в формате аудио, вы можете узнать, как интерпретировать биты в двоичных звуковых данных. Каждая линия данных имеет связанный с ней аудиоформат. Аудиоформат линии данных источника (воспроизведение) указывает, какой тип данных линия данных ожидает получить для вывода. Для линии данных назначения (захвата) аудиоформат определяет тип данных, который может быть прочитан из линии.
Файлы звука также имеют аудиоформаты, конечно. Класс AudioFileFormat encapsulates an 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 |
Поставщики услуг (плагинов) рекомендуются искать информацию о других уже установленных свойствах в сторонних плагинах и следовать тем же соглашениям.
- Since:
- 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.- Returns:
- объект
Map<String, Object>содержащий все свойства. Если свойства не распознаны, возвращается пустая карта. - Since:
- 1.5
- See Also:
getProperty
public Object getProperty(String key)
class description. Если заданное свойство не определено для конкретного формата файла, этот метод возвращает null.
- Parameters:
-
key- ключ искомого свойства - Returns:
- значение свойства с заданным ключом, или
nullесли свойство не существует - Since:
- 1.5
- See Also:
matches
public boolean matches(AudioFormat format)
AudioSystem.NOT_SPECIFIED. Порядок байтов (big-endian или little-endian) должен быть одинаковым, если размер выборки больше одного байта.- Parameters:
-
format- формат для проверки соответствия - Returns:
-
trueесли этот формат соответствует указанному,falseв противном случае
toString
public String toString()
- Overrides:
-
toStringв классеObject - Returns:
- строковое представление аудиоформата
© 1993, 2023, 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/21/docs/api/java.desktop/javax/sound/sampled/AudioFormat.html