AudioStreamWav
Ресурс сэмплированного звука с форматом, частотой и петлёй.
AudioStreamWav хранит данные звука и параметры их интерпретации. В учебном примере Format16Bits, моно и little-endian PCM: два байта на сэмпл, без RIFF/WAV-заголовка в Data. Частоту задаёт MixRate; позиция плеера выражается в секундах.
LoopBegin и LoopEnd используют индексы аудиокадров, а не секунды или байты. У стереокадра два канала. Импортированный ресурс может использовать другой поддерживаемый формат сжатия: не интерпретируйте любые Data как PCM16. Ресурс можно разделять; изменение его настроек затрагивает пользователей ресурса.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
AudioStreamWavКонструктор
public AudioStreamWav();Свойства8
DataСвойство
public byte[] Data { get; set; }Байты звука в кодировке, указанной Format. Для QOA и IMA ADPCM это сжатые данные, а не сырой 16-битный PCM. Не содержит обычный заголовок исходного WAV; учитывайте Stereo и MixRate при работе с PCM.
FormatСвойство
public AudioStreamWav.FormatEnum Format { get; set; }Аудиоформат.
LoopBeginСвойство
public int LoopBegin { get; set; }Начало петли в кадрах отсчётов обработанного ресурса, не в секундах. При 48000 Гц кадр 12000 соответствует 0,25 с; для стерео не умножайте на число каналов.
LoopEndСвойство
public int LoopEnd { get; set; }Конец петли в кадрах отсчётов ресурса. Отрицательное значение настройки импорта, например −1, преобразуется импортером в индекс до записи этого свойства; не путайте этот параметр с секундами LoopOffset у Ogg/MP3.
LoopModeСвойство
public AudioStreamWav.LoopModeEnum LoopMode { get; set; }Режим цикла.
MixRateСвойство
public int MixRate { get; set; }Частота дискретизации ресурса в Гц. После ограничения частоты при импорте проверяйте и MixRate, и объём данных; значение force/max_rate_hz без включения force/max_rate не включает преобразование.
StereoСвойство
public bool Stereo { get; set; }Если true, звук стерео.
TagsСвойство
public Reckfell.Collections.Dictionary Tags { get; set; }Содержит пользовательские теги, если они найдены в данных WAV.
Обычно используемые теги включают title, artist, album, tracknumber и date, (date не имеет стандартного формата даты).
Примечание: Не все теги гарантированно присутствует в каждом файле, поэтому обязательно учитывайте ключи, которые не всегда существуют.
Примечание: В настоящее время поддерживаются только файлы WAV, использующие фрагмент LIST с идентификатором INFO для кодирования тегов.
Методы21
GetDatabyte[]
public byte[] GetData();byte[]GetFormatAudioStreamWav.FormatEnum
public AudioStreamWav.FormatEnum GetFormat();AudioStreamWav.FormatEnumGetLoopBeginint
public int GetLoopBegin();intGetLoopEndint
public int GetLoopEnd();intGetLoopModeAudioStreamWav.LoopModeEnum
public AudioStreamWav.LoopModeEnum GetLoopMode();AudioStreamWav.LoopModeEnumGetMixRateint
public int GetMixRate();intGetTagsReckfell.Collections.Dictionary
public Reckfell.Collections.Dictionary GetTags();Reckfell.Collections.DictionaryIsStereobool
public bool IsStereo();boolLoadFromBuffer2 перегрузки
public static AudioStreamWav LoadFromBuffer(byte[] streamData, Reckfell.Collections.Dictionary options = null);Создает новый экземпляр AudioStreamWav из указанного буфера. Буфер должен содержать данные WAV.
Ключи и значения options соответствуют свойствам ResourceImporterWav. Использование options идентично AudioStreamWav.LoadFromFile.
| Имя | Тип | По умолчанию |
|---|---|---|
streamData | byte[] | — |
options | Reckfell.Collections.Dictionary | null |
AudioStreamWavpublic static AudioStreamWav LoadFromBuffer(ReadOnlySpan<byte> streamData, Reckfell.Collections.Dictionary options);Создает новый экземпляр AudioStreamWav из указанного буфера. Буфер должен содержать данные WAV.
Ключи и значения options соответствуют свойствам ResourceImporterWav. Использование options идентично AudioStreamWav.LoadFromFile.
| Имя | Тип | По умолчанию |
|---|---|---|
streamData | ReadOnlySpan<byte> | — |
options | Reckfell.Collections.Dictionary | — |
AudioStreamWavLoadFromFileAudioStreamWav
public static AudioStreamWav LoadFromFile(string path, Reckfell.Collections.Dictionary options = null);Читает сырой аудиофайл напрямую, не применяя параметры .import редактора. Для ресурса проекта с применённым импортом используйте ResourceLoader.Load. Настройки преобразования WAV передавайте в options; без них сжатие по умолчанию — PCM, а не QOA импортера.
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
options | Reckfell.Collections.Dictionary | null |
pathПуть к настоящему исходному файлу. Убедитесь, что он доступен в выбранной сборке; путь к импортированному ресурсу не гарантирует наличие исходных байтов.
optionsПараметры преобразования, например force/mono и compress/mode. Это отдельный словарь: значения из .import автоматически не подставляются.
AudioStreamWavЗагруженный аудиоресурс либо null при ошибке чтения или формата. Проверяйте результат до воспроизведения.
SaveToWavError
public Error SaveToWav(string path);Сохраняет имеющиеся данные потока в WAV. Не запускает запись микрофона и не проверяет наличие полезного сигнала. В проверке PCM16-файл повторно загрузился с той же частотой, стерео и длительностью.
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
pathПуть для записи, обычно user://recording.wav. При отсутствии суффикса .wav реализация добавляет его; проверяйте доступ к каталогу.
ErrorError.Ok при успехе; обрабатывайте остальные коды. Для IMA ADPCM и QOA сохранение этим методом недоступно; пример создаёт PCM16.
SetData2 перегрузки
public void SetData(byte[] data);| Имя | Тип | По умолчанию |
|---|---|---|
data | byte[] | — |
public void SetData(ReadOnlySpan<byte> data);| Имя | Тип | По умолчанию |
|---|---|---|
data | ReadOnlySpan<byte> | — |
SetFormatvoid
public void SetFormat(AudioStreamWav.FormatEnum format);| Имя | Тип | По умолчанию |
|---|---|---|
format | AudioStreamWav.FormatEnum | — |
SetLoopBeginvoid
public void SetLoopBegin(int loopBegin);| Имя | Тип | По умолчанию |
|---|---|---|
loopBegin | int | — |
SetLoopEndvoid
public void SetLoopEnd(int loopEnd);| Имя | Тип | По умолчанию |
|---|---|---|
loopEnd | int | — |
SetLoopModevoid
public void SetLoopMode(AudioStreamWav.LoopModeEnum loopMode);| Имя | Тип | По умолчанию |
|---|---|---|
loopMode | AudioStreamWav.LoopModeEnum | — |
SetMixRatevoid
public void SetMixRate(int mixRate);| Имя | Тип | По умолчанию |
|---|---|---|
mixRate | int | — |
SetStereovoid
public void SetStereo(bool stereo);| Имя | Тип | По умолчанию |
|---|---|---|
stereo | bool | — |
SetTagsvoid
public void SetTags(Reckfell.Collections.Dictionary tags);| Имя | Тип | По умолчанию |
|---|---|---|
tags | Reckfell.Collections.Dictionary | — |
AudioStreamWav.FormatEnum
| Значение | Описание |
|---|---|
Format16Bits = 1 | 16-битный аудиокодек PCM. |
Format8Bits = 0 | 8-битный аудиокодек PCM. |
ImaAdpcm = 2 | Аудио сжимается с потерями по методу IMA ADPCM. |
Qoa = 3 | Аудио сжато с потерями как Хорошо.. |
AudioStreamWav.LoopModeEnum
| Значение | Описание |
|---|---|
Backward = 3 | Аудио зацикливает данные между |
Disabled = 0 | Звук не зацикливается. |
Forward = 1 | Аудио зацикливает данные между |
Pingpong = 2 | Аудио циклически воспроизводит данные между |