Класс AudioFormat
public class AudioFormat extends Object
AudioFormat — это класс, который определяет конкретную организацию данных в потоке звука. Изучая информацию, хранящуюся в формате аудио, можно понять, как интерпретировать биты в двоичных данных звука. Каждая линия данных имеет связанный с её потоком данных формат аудио. Формат аудио для источниковой (воспроизводящей) линии данных указывает, какой тип данных линия данных ожидает получить для вывода. Для целевой (записывающей) линии данных формат аудио определяет тип данных, которые могут быть считаны с линии.
У звуковых файлов тоже есть форматы аудио, конечно. Класс AudioFileFormat инкапсулирует формат AudioFormat помимо другой информации, специфичной для файла. Аналогично, у AudioInputStream есть AudioFormat.
Класс AudioFormat поддерживает ряд распространённых методов кодирования звуковых файлов, включая импульсно-кодовую модуляцию (PCM), кодирование mu-закона и кодирование a-закона. Эти методы кодирования определены заранее, но поставщики услуг могут создавать новые типы кодирования. Кодирование, используемое конкретным форматом, называется его полем 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<String, |
properties() |
Получает неизменяемую карту свойств. |
String |
toString() |
Возвращает строку, описывающую формат аудио, например: «PCM SIGNED 22050 Гц 16 бит моно 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, 2021, 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/17/docs/api/java.desktop/javax/sound/sampled/AudioFormat.html