Przejdź do głównej zawartości

Importowanie audio

Przegląd

Proces importowania audio w czasie działania można podzielić na kilka kroków:

  1. Utwórz Runtime Audio Importer
  2. Podłącz się do potrzebnych delegatów (OnProgress i OnResult)
  3. Zaimportuj audio z pliku lub bufora
  4. Odtwórz zaimportowaną falę dźwiękową uzyskaną z delegata OnResult (więcej informacji jest tutaj)
Ważna uwaga

Upewnij się, że zarówno instancje Runtime Audio Importer, jak i Sound Wave nie zostaną przedwcześnie zebrane przez odśmiecacz, utrzymując do nich twarde referencje. Można to zrobić przypisując je do oddzielnych zmiennych za pomocą UPROPERTY(), TStrongObjectPtr lub dowolnej innej metody, która zapobiega zniszczeniu obiektu.

Obsługiwane formaty audio

Runtime Audio Importer obsługuje importowanie następujących formatów audio:

FormatOpis
MP3MPEG-1/2/2.5 Audio Layer I/II/III
WAVWaveform Audio File Format
FLACFree Lossless Audio Codec
OGG VORBISKontener Ogg z audio Vorbis
OGG OPUSKontener Ogg z audio Opus
BINKBink Audio
RAW (PCM)Nieskompresowane dane audio Pulse-Code Modulation (Int8, UInt8, Int16, UInt16, Int32, UInt32, Float32)
wskazówka

Podczas importowania audio możesz albo jawnie określić format, albo użyć automatycznego wykrywania formatu na podstawie rozszerzenia pliku lub jego zawartości.

Importowanie audio strumieniowego

W scenariuszach strumieniowych, gdzie dane audio są odbierane przyrostowo (np. z serwera, przechwytywania w czasie rzeczywistym lub strumieni sieciowych), rozważ użycie Streaming Sound Waves.

Ta metoda zapewnia ciągły sposób dołączania danych audio do bufora tej samej fali dźwiękowej, co czyni ją odpowiednią dla transmisji na żywo lub dużych plików przetwarzanych w fragmentach. Więcej szczegółów znajdziesz w dokumentacji Streaming Sound Wave.

Podstawowe kroki implementacji

1. Utwórz Runtime Audio Importer

Najpierw musisz utworzyć obiekt Runtime Audio Importer. Należy upewnić się, że jest on traktowany jako silna referencja przez odśmiecacz.

Węzeł Create Runtime Audio Importer

2. Powiąż z Delegatem OnProgress

Aby śledzić postęp importowania danych audio, możesz powiązać się z delegatem OnProgress (Blueprints) / OnProgressNative (C++).

Przykład powiązania z delegatem On Progress

wskazówka

Pozwoli to monitorować postęp i, na przykład, zaimplementować ekran ładowania.

3. Powiąż z Delegatem OnResult

Aby otrzymać powiadomienie o zakończeniu procesu importu danych audio i uzyskać dostęp do referencji wynikowej fali dźwiękowej, musisz powiązać się z delegatem OnResult (Blueprints) / OnResultNative (C++).

Przykład powiązania z delegatem On Result

ostrzeżenie

Upewnij się, że zaimportowana fala dźwiękowa jest traktowana przez odśmiecacz pamięci (garbage collector) jako silne odniesienie, aby zapobiec niepożądanemu przedwczesnemu odśmiecaniu. Można to zrobić, umieszczając ją jako oddzielną zmienną w Blueprints.

4. Rozpocznij import audio

Rozpocznij proces importowania audio, wywołując odpowiednią funkcję, która może obsłużyć zarówno skompresowane, jak i nieskompresowane formaty danych audio.

Przykłady węzłów Import Audio

Funkcje Narzędziowe

Wyszukiwanie Plików Audio

Możesz przeskanować katalog w poszukiwaniu obsługiwanych plików audio:

Węzeł Scan Directory For Audio Files

Kompletny Przykład

Oto pełny przykład implementacji importowania dźwięku:

Pełny przykład