Spec-Zone.ru › OpenJDK 25

Класс 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-битных отсчётов (или отсчётов любого размера, превышающего один байт) важен порядок байтов: байты в каждом отсчёте располагаются в порядке от младшего к старшему или от старшего к младшему. Для таких кодирований, как 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
Указывает, хранятся ли аудиоданные в порядке от старшего байта к младшему или от младшего к старшему.
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()
Указывает, хранятся ли аудиоданные в порядке байтов от старшего к младшему или от младшего к старшему.
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

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

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
Указывает, хранятся ли аудиоданные в порядке от старшего байта к младшему или от младшего к старшему.

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

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()
Возвращает тип кодирования звуков в этом формате.
Возвращает:
тип кодирования
См. также:
  • 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()
Указывает, хранятся ли аудиоданные в порядке байтов от старшего к младшему или от младшего к старшему. Если размер отсчёта не превышает одного байта, возвращаемое значение не имеет значения.
Возвращает:
true, если данные хранятся в порядке байтов от старшего к младшему; false, если от младшего к старшему

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. Если размер отсчёта превышает один байт, порядок байтов (от старшего к младшему или от младшего к старшему) должен совпадать.
Параметры:
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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/sound/sampled/AudioFormat.html

Spec-Zone.ru

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