Reproduzir áudio
Reprodução Básica
Para reproduzir uma sound wave importada, use as mesmas funções que você usaria para uma comum. Por exemplo, use a função PlaySound2D ou Play de um componente de áudio como o Sound Cue.

Controlando a reprodução
Rebobinando o Tempo de Reprodução
Para rebobinar o tempo de reprodução da onda sonora, use a função 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);
Em versões do UE até a 4.27, se você quiser iniciar a reprodução a partir de um tempo específico maior que 0, talvez seja necessário usar a função RewindPlaybackTime antes. Caso contrário, o som pode não ser reproduzido corretamente devido a problemas internos do motor ao lidar com ondas procedurais. Esse problema foi resolvido no motor a partir da versão 5.0.
Obtendo Informações de Reprodução
Para obter o tempo de reprodução atual da onda sonora, use as funções GetPlaybackTime ou GetPlaybackPercentage. Você também pode obter a duração da onda sonora usando a função 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();
Verificando o Status de Reprodução
Está reproduzindo no momento
Para determinar se a onda sonora está sendo reproduzida no momento, você pode usar a função 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();
A reprodução terminou
Para verificar se a onda sonora terminou de tocar, você pode usar a função 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();
Parando a reprodução
Você pode parar a reprodução da onda sonora usando a função StopPlayback.
- Blueprint
- C++

// Assuming ImportedSoundWave is a UE reference to a UImportedSoundWave object
// Stop the playback of the sound wave
ImportedSoundWave->StopPlayback();
Em geral, recomenda-se interromper a reprodução da onda sonora por meios externos (por exemplo, chamando Stop no componente de áudio) e usar esta função caso meios externos não estejam disponíveis. Além disso, observe que esta função não funciona para reprodução a partir de MetaSounds.
Manipulação de Eventos
Rastreamento da conclusão da reprodução
Para rastrear o fim da reprodução de áudio, vincule ao delegate 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);
}
};
Gerenciamento de Memória
Liberando memória
Você pode limpar manualmente os dados de áudio usando a função ReleaseMemory.
- Blueprint
- C++

// Release memory of the sound wave
ImportedSoundWave->ReleaseMemory();
A liberação manual de memória não é recomendada, a menos que você tenha requisitos específicos de gerenciamento de memória ou tenha desativado o coletor de lixo.
Liberando Dados de Áudio Reproduzidos
Para liberar automaticamente a parte já reproduzida do buffer de áudio durante a reprodução, configure as definições de liberação usando a função 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- se a liberação está habilitada. Desabilitado por padrãoReleaseCallbackFrequency- número de solicitações de geração de áudio (chamadas aOnGeneratePCMAudio) entre verificações de liberaçãoMinFramesToRelease- número mínimo de quadros reproduzidos necessários para acionar uma liberação
Ativar isso limita o retrocesso/busca antes do ponto já liberado, já que esses dados de áudio são fisicamente liberados e não podem mais ser reproduzidos.