Phát âm thanh
Phát lại cơ bản
Để phát một sound wave đã nhập, hãy sử dụng các hàm giống như bạn dùng cho một sound wave thông thường. Ví dụ, sử dụng hàm PlaySound2D hoặc Play từ một audio component như Sound Cue.

Điều khiển phát lại
Tua lại thời gian phát lại
Để tua lại thời gian phát của sóng âm thanh, hãy sử dụng hàm 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);
Trong các phiên bản UE đến 4.27, nếu bạn muốn bắt đầu phát lại từ một thời điểm cụ thể lớn hơn 0, bạn có thể cần sử dụng hàm RewindPlaybackTime trước. Nếu không, âm thanh có thể không phát lại đúng do các vấn đề nội bộ của engine khi xử lý procedural wave. Vấn đề này đã được giải quyết trong engine kể từ phiên bản 5.0.
Lấy thông tin phát lại
Để lấy thời gian phát hiện tại của sóng âm thanh, hãy sử dụng các hàm GetPlaybackTime hoặc GetPlaybackPercentage. Bạn cũng có thể lấy thời lượng của sóng âm thanh bằng cách sử dụng hàm 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();
Kiểm tra trạng thái phát lại
Hiện đang phát
Để xác định xem sóng âm thanh hiện có đang phát hay không, bạn có thể sử dụng hàm 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();
Đã phát xong chưa
Để kiểm tra xem sóng âm thanh đã phát xong chưa, bạn có thể sử dụng hàm 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();
Dừng phát lại
Bạn có thể dừng phát lại sóng âm thanh bằng cách sử dụng hàm StopPlayback.
- Blueprint
- C++

// Assuming ImportedSoundWave is a UE reference to a UImportedSoundWave object
// Stop the playback of the sound wave
ImportedSoundWave->StopPlayback();
Nói chung, bạn nên dừng phát sóng âm thanh bằng các cách bên ngoài (ví dụ: gọi Stop trên audio component) và chỉ dùng hàm này nếu không có cách bên ngoài nào khả dụng. Cũng lưu ý rằng hàm này không hoạt động với phát lại từ MetaSounds.
Xử lý sự kiện
Theo dõi hoàn tất phát lại
Để theo dõi thời điểm kết thúc phát âm thanh, hãy liên kết với 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);
}
};
Quản lý bộ nhớ
Giải phóng bộ nhớ
Bạn có thể xóa dữ liệu âm thanh theo cách thủ công bằng cách sử dụng hàm ReleaseMemory.
- Blueprint
- C++

// Release memory of the sound wave
ImportedSoundWave->ReleaseMemory();
Không nên giải phóng bộ nhớ thủ công trừ khi bạn có yêu cầu quản lý bộ nhớ cụ thể hoặc đã tắt trình thu gom rác.
Giải phóng dữ liệu âm thanh đã phát
Để tự động giải phóng phần đã phát của bộ đệm âm thanh trong quá trình phát, hãy cấu hình cài đặt giải phóng bằng hàm 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- liệu việc giải phóng có được bật hay không. Mặc định bị tắtReleaseCallbackFrequency- số lượng yêu cầu tạo âm thanh (các lệnh gọiOnGeneratePCMAudio) giữa các lần kiểm tra giải phóngMinFramesToRelease- số khung hình đã phát tối thiểu cần thiết để kích hoạt việc giải phóng
Bật tính năng này sẽ giới hạn việc tua lại/tìm kiếm trước điểm đã được phát hành, vì dữ liệu âm thanh đó đã được giải phóng vật lý và không thể phát lại được nữa.