Класс 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". |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли этому объекту какой-либо другой объект. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии. Финализация устарела и может быть удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого объекта Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
Подробное описание полей
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— указывает, хранятся ли данные одной выборки в порядке байтов 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.- Параметры:
-
encoding— метод кодирования аудио -
sampleRate— число выборок в секунду -
sampleSizeInBits— число битов в каждой выборке -
channels— число каналов (1 для моно, 2 для стерео и т. д.) -
frameSize— число байтов в каждом кадре -
frameRate— число кадров в секунду -
bigEndian— указывает, хранятся ли данные одной выборки в порядке байтов big-endian (falseозначает little-endian) -
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— указывает, хранятся ли данные одной выборки в порядке байтов big-endian (falseозначает little-endian)
Подробное описание методов
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, если данные хранятся в порядке байтов 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.