मुख्य कंटेंट तक स्किप करें

Streaming Sound Wave

एक स्ट्रीमिंग साउंड वेव एक प्रकार का आयातित साउंड वेव है जो ऑडियो डेटा को गतिशील रूप से जोड़ने का समर्थन करता है, यहां तक कि प्लेबैक के दौरान भी। यह एक आयातित साउंड वेव के समान ही कार्यक्षमता प्रदान करता है, जैसे रिवाइंड करना, और इसका उपयोग SoundCues आदि में किया जा सकता है।

tip

वॉयस एक्टिविटी डिटेक्शन (VAD) के लिए, इस पृष्ठ का संदर्भ लें।

एक स्ट्रीमिंग साउंड वेव बनाना

सबसे पहले आपको एक स्ट्रीमिंग साउंड वेव बनाना चाहिए। कृपया ध्यान दें कि आपको समय से पहले विनाश को रोकने के लिए इसे एक मजबूत संदर्भ के रूप में मानना चाहिए (उदाहरण के लिए, Blueprints में इसे एक अलग वेरिएबल को असाइन करके या C++ में UPROPERTY() का उपयोग करके)।

Create Streaming Sound Wave node

ध्वनि तरंग चलाना

आप फिर उस ध्वनि तरंग को चला सकते हैं। हालाँकि, अभी ऐसा करना आवश्यक नहीं है, आप ध्वनि तरंग को बाद में चलाना शुरू कर सकते हैं।

ध्वनि तरंग चलाने के विभिन्न उदाहरण

ऑडियो डेटा पूर्व-आवंटित करना

वैकल्पिक रूप से, आप ऑडियो डेटा (बाइट्स) को पूर्व-आवंटित कर सकते हैं ताकि हर बार नया ऑडियो डेटा जोड़ने पर पूरे PCM बफ़र को दोबारा आवंटित करने से बचा जा सके।

Pre Allocate Audio Data नोड

ऑडियो डेटा जोड़ना

मौजूदा बफ़र के अंत में ऑडियो डेटा जोड़ने के लिए, ऑडियो डेटा को गतिशील रूप से जोड़ने के लिए उपयुक्त फ़ंक्शंस का उपयोग करें। प्लेबैक इन जोड़ों के कतार अनुक्रम का पालन करेगा।

Append Audio Data node

त्वरित या विकृत ऑडियो प्लेबैक से बचना

जब साउंड वेव चल रहा हो तब ऑडियो डेटा स्ट्रीम करते समय, आप विशिष्ट परिदृश्यों में त्वरित या विकृत ऑडियो प्लेबैक का अनुभव कर सकते हैं। यह समस्या आमतौर पर तब होती है जब:

  1. साउंड वेव प्लेबैक वर्तमान बफर के अंत के निकट/पर है
  2. नया ऑडियो डेटा लगातार स्ट्रीमिंग साउंड वेव में कतारबद्ध किया जा रहा है
  3. प्लेबैक आने वाले डेटा स्ट्रीम के साथ पकड़ बना लेता है

आप बिना किसी समस्या के किसी भी समय ऑडियो डेटा भरना बंद कर सकते हैं। हालाँकि, उन परिदृश्यों के लिए जहाँ आपको निरंतर स्ट्रीमिंग की आवश्यकता होती है (जैसे रीयल-टाइम ऑडियो स्ट्रीमिंग), आपके ऑडियो डेटा स्ट्रीमिंग की विश्वसनीयता के आधार पर दो दृष्टिकोण हैं:

विश्वसनीय, सुसंगत स्ट्रीमिंग के लिए: पहला चंक प्राप्त होने के तुरंत बाद प्लेबैक शुरू करने के लिए OnPopulateAudioState डेलिगेट का उपयोग करें।

अविश्वसनीय स्ट्रीमिंग (नेटवर्क समस्याएं, रुक-रुक कर डेटा) के लिए: प्लेबैक शुरू करने से पहले एक बड़ा बफर बनाने के लिए OnPopulateAudioState ट्रिगर होने के बाद भी एक अतिरिक्त देरी जोड़ें।

प्लेबैक समस्याओं से बचने के लिए OnPopulateAudioState का उपयोग करना

नोट: आप किसी भी समय ऑडियो डेटा को पॉप्युलेट करना बंद कर सकते हैं, इससे प्लेबैक में कोई समस्या नहीं आएगी। सटीक दृष्टिकोण आपके ऑडियो डेटा स्ट्रीमिंग की विश्वसनीयता पर निर्भर करता है - सुसंगत स्ट्रीम के लिए तत्काल प्लेबैक का उपयोग करें, या अविश्वसनीय स्ट्रीम (जैसे, नेटवर्क कनेक्टिविटी समस्याएं) के लिए अतिरिक्त बफरिंग विलंब जोड़ें।

उदाहरण उपयोग

अंत में, आपका कार्यान्वयन कुछ इस तरह दिख सकता है:

स्ट्रीमिंग साउंड वेव का उपयोग करने का एक उदाहरण

On Populate Audio State

OnPopulateAudioState डेलीगेट OnPopulateAudioData के समान ही कार्य करता है लेकिन पॉप्युलेटेड ऑडियो डेटा को प्रसारित नहीं करता है। यह तब उपयोगी हो सकता है जब आप पॉप्युलेटेड ऑडियो डेटा की एक सरणी पास किए बिना यह ट्रैक करना चाहते हैं कि ऑडियो डेटा कब पॉप्युलेट हुआ है, जिससे प्रदर्शन में सुधार हो सकता है।

On Populate Audio State delegate

PCM डेटा के साथ कार्य करना

प्लेबैक के दौरान PCM डेटा तक रीयल-टाइम पहुंच के लिए, PCM डेटा हैंडलिंग देखें।