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

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

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

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

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

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

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

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

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

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

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

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

عقدة Pre Allocate Audio Data

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

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

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

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

في كثير من الأحيان، عندما تحتاج إلى بث بيانات الصوت والتشغيل في نفس الوقت، يجب إضافة تأخير بسيط قبل التشغيل لتجنب تسارع الصوت بسبب ملء المخزن المؤقت بسرعة كبيرة. يُوصى عادةً بتأخير يبلغ حوالي نصف ثانية.

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

في النهاية، قد يبدو تنفيذك كما يلي:

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

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

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

مفوض On Populate Audio State

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

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