انتقل إلى المحتوى الرئيسي

استيراد الصوت

نظرة عامة

يمكن تقسيم عملية استيراد الصوت أثناء التشغيل إلى عدة خطوات:

  1. إنشاء أداة استيراد الصوت أثناء التشغيل (Runtime Audio Importer)
  2. ربط مناديات (delegates) المطلوبة (OnProgress و OnResult)
  3. استيراد الصوت من ملف أو مخزن مؤقت (buffer)
  4. تشغيل موجة الصوت المستوردة التي تم الحصول عليها من منديل OnResult (مزيد من المعلومات هنا)
ملاحظة هامة

تأكد من أن كلا مثيلي Runtime Audio Importer و Sound Wave لا يتم جمعها بواسطة جامع القمامة (garbage collected) قبل الأوان عن طريق الاحتفاظ بمرجع قوي (hard reference) لهما، ويمكن القيام بذلك عن طريق تعيينهما لمتغيرات منفصلة باستخدام UPROPERTY()، أو TStrongObjectPtr، أو أي طريقة أخرى تمنع تدمير الكائن.

تنسيقات الصوت المدعومة

تدعم أداة استيراد الصوت أثناء التشغيل (Runtime Audio Importer) استيراد تنسيقات الصوت التالية:

التنسيقالوصف
MP3MPEG-1/2/2.5 Audio Layer I/II/III
WAVWaveform Audio File Format
FLACFree Lossless Audio Codec
OGG VORBISحاوية Ogg مع صوت Vorbis
OGG OPUSحاوية Ogg مع صوت Opus
BINKBink Audio
RAW (PCM)بيانات صوت غير مضغوطة بتعديل رمز النبض (Pulse-Code Modulation) (Int8, UInt8, Int16, UInt16, Int32, UInt32, Float32)
تلميح

عند استيراد الصوت، يمكنك إما تحديد التنسيق صراحةً أو استخدام الكشف التلقائي عن التنسيق بناءً على امتداد الملف أو محتواه.

استيراد الصوت بالتدفق (Streaming)

بالنسبة لسيناريوهات التدفق حيث يتم استقبال بيانات الصوت بشكل تدريجي (على سبيل المثال، من خادم، أو تسجيل في الوقت الفعلي، أو تدفقات شبكية)، فكر في استخدام Streaming Sound Waves.

توفر هذه الطريقة وسيلة مستمرة لإلحاق بيانات الصوت بنفس المخزن المؤقت (buffer) لموجة الصوت، مما يجعلها مناسبة للتدفقات المباشرة أو الملفات الكبيرة التي تتم معالجتها على شكل أجزاء (chunks). راجع توثيق Streaming Sound Wave لمزيد من التفاصيل.

خطوات التنفيذ الأساسية

1. إنشاء أداة استيراد الصوت أثناء التشغيل (Runtime Audio Importer)

أولاً، تحتاج إلى إنشاء كائن Runtime Audio Importer. يجب أن تتأكد من أنه يعامل كمرجع قوي (strong reference) بواسطة جامع القمامة.

Create Runtime Audio Importer node

2. ربط مندوب OnProgress

لتتبع تقدم استيراد بيانات الصوت، يمكنك الربط بمناديب OnProgress (Blueprints) / OnProgressNative (C++).

مثال على الربط بمنتدى On Progress

تلميح

سيسمح لك هذا بمراقبة التقدم، وتنفيذ شاشة تحميل على سبيل المثال.

3. الربط بمنفذ OnResult

للإشعار عند اكتمال عملية استيراد بيانات الصوت وللوصول إلى المرجع لموجة الصوت الناتجة، يجب عليك الربط بمنفذ OnResult (Blueprints) / OnResultNative (C++).

مثال على الربط بمنفذ On Result

warning

تأكد من أن موجة الصوت المستوردة تُعامل كمرجع قوي بواسطة جامع القمامة لمنع حذفها المبكر غير المرغوب فيه. يمكن القيام بذلك عن طريق وضعها كمتغير منفصل في Blueprints.

4. بدء استيراد الصوت

ابدأ عملية استيراد الصوت عن طريق استدعاء الوظيفة ذات الصلة، والتي يمكنها التعامل مع كل من تنسيقات بيانات الصوت المضغوطة وغير المضغوطة.

أمثلة عقد Import Audio

وظائف مساعدة

البحث عن ملفات الصوت

يمكنك مسح دليل للبحث عن ملفات الصوت المدعومة:

Scan Directory For Audio Files node

مثال كامل

إليك مثال تنفيذ كامل لاستيراد الصوت:

مثال كامل