Spec-Zone.ru › OpenJDK 27

Класс AudioFormat

java.lang.Object
javax.sound.sampled.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
См. также:
  • DataLine.getFormat()
  • AudioInputStream.getFormat()
  • AudioFileFormat
  • FormatConversionProvider

Краткое описание вложенных классов

Модификатор и тип Класс Описание
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(float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndian)
Создаёт AudioFormat с линейным кодированием PCM и заданными параметрами.
AudioFormat(AudioFormat.Encoding encoding, float sampleRate, int sampleSizeInBits, int channels, int frameSize, float frameRate, boolean bigEndian)
Создаёт AudioFormat с заданными параметрами.
AudioFormat(AudioFormat.Encoding encoding, float sampleRate, int sampleSizeInBits, int channels, int frameSize, float frameRate, boolean bigEndian, Map<String,Object> properties)
Создаёт AudioFormat с заданными параметрами.

Краткое описание методов

Модификатор и тип Метод Описание
int getChannels()
Возвращает число каналов.
AudioFormat.Encoding getEncoding()
Возвращает тип кодирования звуков в этом формате.
float getFrameRate()
Возвращает частоту кадров в кадрах в секунду.
int getFrameSize()
Возвращает размер кадра в байтах.
Object getProperty(String key)
Возвращает значение свойства, заданного ключом.
float getSampleRate()
Возвращает частоту дискретизации.
int getSampleSizeInBits()
Возвращает размер выборки.
boolean isBigEndian()
Указывает, хранятся ли аудиоданные в порядке байтов big-endian или little-endian.
boolean matches(AudioFormat format)
Указывает, соответствует ли этот формат заданному формату.
Map<String,Object> 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(Object obj)
Указывает, равен ли этому объекту какой-либо другой объект.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация устарела и может быть удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого объекта Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного промежутка реального времени.

Подробное описание полей

encoding

protected AudioFormat.Encoding encoding
Метод кодирования аудиоданных, используемый этим форматом.

sampleRate

protected float sampleRate
Число выборок, воспроизводимых или записываемых в секунду для звуков в этом формате.

sampleSizeInBits

protected int sampleSizeInBits
Число битов в каждой выборке звука в этом формате.

channels

protected int channels
Число аудиоканалов в этом формате (1 для моно, 2 для стерео).

frameSize

protected int frameSize
Число байтов в каждом кадре звука в этом формате.

frameRate

protected float frameRate
Число кадров, воспроизводимых или записываемых в секунду для звуков в этом формате.

bigEndian

protected boolean bigEndian
Указывает, хранятся ли аудиоданные в порядке big-endian или little-endian.

Подробное описание конструкторов

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()
Возвращает тип кодирования звуков в этом формате.
Возвращает:
тип кодирования
См. также:
  • AudioFormat.Encoding.PCM_SIGNED
  • AudioFormat.Encoding.PCM_UNSIGNED
  • AudioFormat.Encoding.ULAW
  • AudioFormat.Encoding.ALAW

getSampleRate

public float getSampleRate()
Возвращает частоту дискретизации. Для сжатых форматов возвращаемое значение является частотой дискретизации несжатых аудиоданных. Если этот AudioFormat используется для запросов (например, AudioSystem.isConversionSupported) или описания возможностей (например, DataLine.Info.getFormats), значение частоты дискретизации AudioSystem.NOT_SPECIFIED означает, что допустима любая частота дискретизации. AudioSystem.NOT_SPECIFIED также возвращается, если частота дискретизации не определена для этого аудиоформата.
Возвращает:
число выборок в секунду или AudioSystem.NOT_SPECIFIED
См. также:
  • getFrameRate()
  • AudioSystem.NOT_SPECIFIED

getSampleSizeInBits

public int getSampleSizeInBits()
Возвращает размер выборки. Для сжатых форматов возвращаемое значение является размером выборки несжатых аудиоданных. Если этот AudioFormat используется для запросов (например, AudioSystem.isConversionSupported) или описания возможностей (например, DataLine.Info.getFormats), значение размера выборки AudioSystem.NOT_SPECIFIED означает, что допустим любой размер выборки. AudioSystem.NOT_SPECIFIED также возвращается, если размер выборки не определён для этого аудиоформата.
Возвращает:
число битов в каждой выборке или AudioSystem.NOT_SPECIFIED
См. также:
  • getFrameSize()
  • AudioSystem.NOT_SPECIFIED

getChannels

public int getChannels()
Возвращает число каналов. Если этот AudioFormat используется для запросов (например, AudioSystem.isConversionSupported) или описания возможностей (например, DataLine.Info.getFormats), возвращаемое значение AudioSystem.NOT_SPECIFIED означает, что допустимо любое (положительное) число каналов.
Возвращает:
число каналов (1 для моно, 2 для стерео и т. д.) или AudioSystem.NOT_SPECIFIED
См. также:
  • AudioSystem.NOT_SPECIFIED

getFrameSize

public int getFrameSize()
Возвращает размер кадра в байтах. Если этот AudioFormat используется для запросов (например, AudioSystem.isConversionSupported) или описания возможностей (например, DataLine.Info.getFormats), значение размера кадра AudioSystem.NOT_SPECIFIED означает, что допустим любой размер кадра. AudioSystem.NOT_SPECIFIED также возвращается, если размер кадра не определён для этого аудиоформата.
Возвращает:
число байтов в кадре или AudioSystem.NOT_SPECIFIED
См. также:
  • getSampleSizeInBits()
  • AudioSystem.NOT_SPECIFIED

getFrameRate

public float getFrameRate()
Возвращает частоту кадров в кадрах в секунду. Если этот AudioFormat используется для запросов (например, AudioSystem.isConversionSupported) или описания возможностей (например, DataLine.Info.getFormats), значение частоты кадров AudioSystem.NOT_SPECIFIED означает, что допустима любая частота кадров. AudioSystem.NOT_SPECIFIED также возвращается, если частота кадров не определена для этого аудиоформата.
Возвращает:
число кадров в секунду или AudioSystem.NOT_SPECIFIED
См. также:
  • getSampleRate()
  • AudioSystem.NOT_SPECIFIED

isBigEndian

public boolean isBigEndian()
Указывает, хранятся ли аудиоданные в порядке байтов big-endian или little-endian. Если размер выборки не превышает одного байта, возвращаемое значение не имеет значения.
Возвращает:
true, если данные хранятся в порядке байтов big-endian; false, если в порядке little-endian

properties

public Map<String,Object> properties()
Возвращает неизменяемое отображение свойств. Понятие свойств подробнее описано в class description.
Возвращает:
объект Map<String, Object>, содержащий все свойства. Если свойства не распознаны, возвращается пустое отображение.
С версии:
1.5
См. также:
  • getProperty(String)

getProperty

public Object getProperty(String key)
Возвращает значение свойства, заданного ключом. Понятие свойств подробнее описано в class description.

Если указанное свойство не определено для конкретного формата файла, этот метод возвращает null.

Параметры:
key — ключ требуемого свойства
Возвращает:
значение свойства с указанным ключом или null, если свойство не существует
С версии:
1.5
См. также:
  • properties()

matches

public boolean matches(AudioFormat format)
Указывает, соответствует ли этот формат заданному формату. Для соответствия форматы должны иметь одинаковое кодирование и согласованные значения числа каналов, частоты дискретизации, размера выборки, частоты кадров и размера кадра. Значения свойства считаются согласованными, если они равны или если для заданного формата значение свойства равно AudioSystem.NOT_SPECIFIED. Если размер выборки превышает один байт, порядок байтов (big-endian или little-endian) должен совпадать.
Параметры:
format — формат для проверки соответствия
Возвращает:
true, если этот формат соответствует заданному формату; в противном случае — false

toString

public String toString()
Возвращает строку с описанием аудиоформата, например: "PCM SIGNED 22050 Hz 16 bit mono big-endian". Содержимое строки может различаться в разных реализациях Java Sound.
Переопределяет:
toString в классе Object
Возвращает:
строковое представление аудиоформата

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её дочерних компаний в США и других странах.
Авторские права © 1993, 2026, Oracle и/или её дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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