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

تدفق موجة الصوت

لاكتشاف نشاط الصوت (VAD)، راجع هذه الصفحة.

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

إنشاء موجة صوت متدفقة

أولاً يجب عليك إنشاء موجة صوت متدفقة. يرجى ملاحظة أنه يجب التعامل معها كمرجع قوي لمنع التدمير المبكر (على سبيل المثال عن طريق تعيينها لمتغير منفصل في Blueprints أو استخدام UPROPERTY() في C++).

إنشاء عقدة موجة الصوت المتدفقة

تشغيل موجة الصوت

يمكنك بعد ذلك تشغيل موجة الصوت تلك. ومع ذلك، ليس من الضروري القيام بذلك الآن، يمكنك بدء تشغيل موجة الصوت لاحقًا.

أمثلة متنوعة لتشغيل موجة صوت

تخصيص بيانات الصوت مسبقًا

اختياريًا، يمكنك تخصيص بيانات الصوت (بايت) مسبقًا لتجنب إعادة تخصيص مخزن PCM بالكامل في كل مرة يتم فيها إلحاق بيانات صوتية جديدة.

عقدة Pre Allocate Audio Data

إلحاق بيانات الصوت

لإضافة بيانات الصوت إلى نهاية المخزن المؤقت الحالي، استخدم الدوال المناسبة للإلحاق الديناميكي لبيانات الصوت. سيتابع التشغيل تسلسل الطابور لهذه الإلحاقات.

عقدة إلحاق بيانات الصوت

تجنب تشغيل الصوت المسرع أو المشوه

عند بث بيانات الصوت أثناء تشغيل الموجة الصوتية، قد تواجه تشغيلًا صوتيًا مسرعًا أو مشوهًا في سيناريوهات محددة. تحدث هذه المشكلة عادةً عندما:

  1. يكون تشغيل الموجة الصوتية قريبًا/في نهاية المخزن المؤقت الحالي
  2. يتم إضافة بيانات صوتية جديدة باستمرار إلى موجة الصوت المتدفقة
  3. يلحق التشغيل بتيار البيانات الواردة

يمكنك إيقاف تعبئة بيانات الصوت في أي وقت دون مشاكل. ومع ذلك، بالنسبة للسيناريوهات التي تحتاج فيها إلى تدفق مستمر (مثل بث الصوت في الوقت الفعلي)، هناك طريقتان اعتمادًا على موثوقية تدفق بيانات الصوت لديك:

لتدفق موثوق ومتسق: استخدم مندوب OnPopulateAudioState لبدء التشغيل فورًا بعد استلام القطعة الأولى.

لتدفق غير موثوق (مشاكل الشبكة، بيانات متقطعة): أضف تأخيرًا إضافيًا حتى بعد تشغيل OnPopulateAudioState لبناء مخزن مؤقت أكبر قبل بدء التشغيل.

Using OnPopulateAudioState to avoid playback issues

ملاحظة: يمكنك إيقاف تعبئة بيانات الصوت في أي وقت دون التسبب في مشاكل تشغيل. يعتمد الأسلوب الدقيق على موثوقية تدفق بيانات الصوت لديك - استخدم التشغيل الفوري للتدفقات المتسقة، أو أضف تأخير تخزين مؤقت إضافي للتدفقات غير الموثوقة (مثل مشاكل اتصال الشبكة).

مثال للاستخدام

أخيرًا، قد يبدو تنفيذك كما يلي:

مثال لاستخدام موجة صوتية متدفقة

عند ملء حالة الصوت

تعمل المفوضة OnPopulateAudioState بشكل مشابه لـ OnPopulateAudioData ولكنها لا تبث بيانات الصوت المملوءة. يمكن أن يكون هذا مفيدًا عندما تريد تتبع وقت ملء بيانات الصوت دون تمرير مصفوفة لبيانات الصوت المملوءة، مما قد يحسن الأداء.

مفوض On Populate Audio State

العمل مع بيانات PCM

للوصول إلى بيانات PCM في الوقت الفعلي أثناء التشغيل، راجع معالجة بيانات PCM.