Воспроизвести аудио
Базовое воспроизведение
Чтобы воспроизвести импортированную звуковую волну, используйте те же функции, что и для обычной. Например, используйте функцию PlaySound2D или Play из аудиокомпонента, такого как Sound Cue.

Управление воспроизведением
Перемотка времени воспроизведения назад
Чтобы перемотать время воспроизведения звуковой волны, используйте функцию RewindPlaybackTime.
- Blueprint
- C++

// Assuming ImportedSoundWave is a UE reference to a UImportedSoundWave object
// Rewind playback time of the sound wave for 12.5 seconds
ImportedSoundWave->RewindPlaybackTime(12.5f);
В версиях UE до 4.27, если вы хотите начать воспроизведение с определённого времени больше 0, возможно, вам потребуется предварительно использовать функцию RewindPlaybackTime. В противном случае звук может воспроизводиться некорректно из-за внутренних проблем движка при обработке процедурных волн. Эта проблема была решена в движке начиная с версии 5.0.
Получение информации о воспроизведении
Чтобы получить текущее время воспроизведения звуковой волны, используйте функции GetPlaybackTime или GetPlaybackPercentage. Также вы можете получить длительность звуковой волны с помощью функции GetDuration.
- Blueprint
- C++

// Assuming ImportedSoundWave is a UE reference to a UImportedSoundWave object
// Get the current playback time of the sound wave
float PlaybackTime = ImportedSoundWave->GetPlaybackTime();
// Get the current playback percentage of the sound wave
float PlaybackPercentage = ImportedSoundWave->GetPlaybackPercentage();
// Get the duration of the sound wave
float Duration = ImportedSoundWave->GetDuration();
Проверка статуса воспроизведения
Воспроизводится
Чтобы определить, воспроизводится ли звуковая волна в данный момент, можно использовать функцию IsPlaying.
- Blueprint
- C++

// Assuming ImportedSoundWave is a UE reference to a UImportedSoundWave object
// Check if the sound wave is currently playing
bool bIsPlaying = ImportedSoundWave->IsPlaying();
Воспроизведение завершено
Чтобы проверить, завершилось ли воспроизведение звуковой волны, можно использовать функцию IsPlaybackFinished.
- Blueprint
- C++

// Assuming ImportedSoundWave is a UE reference to a UImportedSoundWave object
// Check if the sound wave has finished playback
bool bIsFinished = ImportedSoundWave->IsPlaybackFinished();
Остановка воспроизведения
Вы можете остановить воспроизведение звуковой волны с помощью функции StopPlayback.
- Blueprint
- C++

// Assuming ImportedSoundWave is a UE reference to a UImportedSoundWave object
// Stop the playback of the sound wave
ImportedSoundWave->StopPlayback();
Обычно рекомендуется останавливать воспроизведение звуковой волны внешними средствами (например, вызвав Stop у аудиокомпонента), а эту функцию использовать, если внешние средства недоступны. Также учтите, что эта функция не работает для воспроизведения из MetaSounds.
Обработка событий
Отслеживание завершения воспроизведения
Чтобы отслеживать завершение воспроизведения аудио, привяжитесь к делегату OnAudioPlaybackFinished.
- Blueprint
- C++

UCLASS()
class AMyAudioPlayer : public AActor
{
GENERATED_BODY()
public:
UFUNCTION()
void OnAudioFinished()
{
// Handle the end of audio playback
}
void BindAudioDelegate(UImportedSoundWave* ImportedSoundWave)
{
// Bind to the OnAudioPlaybackFinished delegate
ImportedSoundWave->OnAudioPlaybackFinished.AddDynamic(this, &AMyAudioPlayer::OnAudioFinished);
}
};
Управление памятью
Освобождение памяти
Вы можете вручную очистить аудиоданные с помощью функции ReleaseMemory.
- Blueprint
- C++

// Release memory of the sound wave
ImportedSoundWave->ReleaseMemory();
Ручное освобождение памяти не рекомендуется, если у вас нет особых требований к управлению памятью или вы не отключили сборщик мусора.
Освобождение воспроизведённых аудиоданных
Чтобы автоматически освобождать уже воспроизведённую часть аудиобуфера во время воспроизведения, настройте параметры освобождения с помощью функции SetPlayedAudioDataReleaseSettings.
- Blueprint
- C++

FPlayedAudioDataReleaseSettings ReleaseSettings;
ReleaseSettings.bReleasePlayedAudioData = true;
ReleaseSettings.ReleaseCallbackFrequency = 50;
ReleaseSettings.MinFramesToRelease = 44100;
// Configure automatic release of the already-played audio data
ImportedSoundWave->SetPlayedAudioDataReleaseSettings(ReleaseSettings);
bReleasePlayedAudioData— включено ли освобождение. По умолчанию отключеноReleaseCallbackFrequency— количество запросов на генерацию аудио (вызововOnGeneratePCMAudio) между проверками освобожденияMinFramesToRelease— минимальное количество воспроизведённых кадров, необходимое для запуска освобождения
Включение этого ограничивает перемотку/поиск до уже воспроизведённой точки, поскольку эти аудиоданные физически освобождаются и больше не могут быть воспроизведены.