Spec-Zone.ru › OpenJDK 21

Класс AudioFormat

java.lang.Object
javax.sound.sampled.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
См. также:
  • 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".

Методы, объявленные в классе java.lang.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
Указывает, хранятся ли аудиоданные в формате 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.
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:
  • 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 также возвращается, если частота дискретизации не определена для данного аудиоформата.
Returns:
количество выборок в секунду, или AudioSystem.NOT_SPECIFIED
See Also:
  • getFrameRate()
  • AudioSystem.NOT_SPECIFIED

getSampleSizeInBits

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

getChannels

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

getFrameSize

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

getFrameRate

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

isBigEndian

public boolean isBigEndian()
Указывает, хранятся ли аудиоданные в байтовом порядке big-endian или little-endian. Если размер выборки не превышает одного байта, возвращаемое значение не имеет значения.
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(String)

getProperty

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

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

Parameters:
key - ключ искомого свойства
Returns:
значение свойства с заданным ключом, или null если свойство не существует
Since:
1.5
See Also:
  • properties()

matches

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

toString

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

Spec-Zone.ru

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