पिक्सेल स्ट्रीमिंग ऑडियो कैप्चर
पिक्सेल स्ट्रीमिंग Unreal Engine के लिए एक प्लगइन है जो रेंडर किए गए फ्रेम्स को स्ट्रीम करता है और WebRTC के माध्यम से इनपुट/आउटपुट को सिंक्रनाइज़ करता है। एप्लिकेशन सर्वर साइड पर चलता है, जबकि क्लाइंट साइड रेंडरिंग और यूजर इंटरैक्शन को संभालता है। पिक्सेल स्ट्रीमिंग और सेटअप के बारे में अधिक जानकारी के लिए पिक्सेल स्ट्रीमिंग डॉक्यूमेंटेशन देखें।
संगतता
यह समाधान निम्नलिखित के साथ काम करता है:
- ऑफिशियल पिक्सेल स्ट्रीमिंग इंफ्रास्ट्रक्चर (Epic Games रेफरेंस इम्प्लीमेंटेशन)
- थर्ड-पार्टी पिक्सेल स्ट्रीमिंग प्रोवाइडर्स जिनमें शामिल हैं:
- Vagon.io
- Arcane Mirage
- Eagle 3D Streaming
- अन्य WebRTC-आधारित स्ट्रीमिंग सॉल्यूशंस
- ऑपरेटिंग सिस्टम: Windows और Linux सर्वर्स
इस इम्प्लीमेंटेशन को इन वातावरणों में टेस्ट किया गया है और यह उपयोग किए गए पिक्सेल स्ट्रीमिंग होस्टिंग सॉल्यूशन के बावजूद सही तरीके से काम करता है।
एक्सटेंशन प्लगइन इंस्टालेशन
यह फीचर Runtime Audio Importer प्लगइन के एक एक्सटेंशन के रूप में प्रदान किया गया है। इसका उपयोग करने के लिए आपको निम्नलिखित करना होगा:
- सुनिश्चित करें कि Runtime Audio Importer प्लगइन आपके प्रोजेक्ट में पहले से इंस्टॉल है
- पिक्सेल स्ट्रीमिंग ऑडियो कैप्चर प्लगइन एक्सटेंशन को Google Drive से डाउनलोड करें
- डाउनलोड की गई आर्काइव से फोल्डर को अपने प्रोजेक्ट के
Plugins
फोल्डर में एक्सट्रैक्ट करें (यदि यह फोल्डर मौजूद नहीं है तो इसे बनाएं) - अपने प्रोजेक्ट को रीबिल्ड करें (इस एक्सटेंशन के लिए एक C++ प्रोजेक्ट की आवश्यकता होती है)
- यह एक्सटेंशन सोर्स कोड के रूप में प्रदान की जाती है और इसका उपयोग करने के लिए एक C++ प्रोजेक्ट की आवश्यकता होती है
- समर्थित Unreal Engine वर्जन: UE 5.2 और बाद के वर्जन
- प्लगइन्स को मैन्युअली बिल्ड करने के तरीके के बारे में अधिक जानकारी के लिए Building Plugins ट्यूटोरियल देखें
अवलोकन
पिक्सेल स्ट्रीमिंग कैप्चरेबल साउंड वेव स्टैंडर्ड कैप्चरेबल साउंड वेव को एक्सटेंड करता है ताकि पिक्सेल स्ट्रीमिंग क्लाइंट्स के माइक्रोफोन से सीधे ऑडियो कैप्चर किया जा सके। यह फीचर आपको निम्नलिखित करने की अनुमति देता है:
- पिक्सेल स्ट्रीमिंग के माध्यम से कनेक्टेड ब्राउज़र्स से ऑडियो कैप्चर करना
- विशिष्ट प्लेयर्स/पीयर्स से ऑडियो प्रोसेस करना
- रिमोट यूजर्स से वॉइस चैट, वॉइस कमांड्स, या ऑडियो रिकॉर्डिंग को इम्प्लीमेंट करना
बेसिक यूसेज
पिक्सेल स्ट्रीमिंग कैप्चरेबल साउंड वेव बनाना
सबसे पहले, आपको एक पिक्सेल स्ट्रीमिंग कैप्चरेबल साउंड वेव ऑब्जेक्ट बनाने की आवश्यकता है:
- Blueprint
- C++
PixelStreamingSoundWave = UPixelStreamingCapturableSoundWave::CreatePixelStreamingCapturableSoundWave();
आपको पिक्सेल स्ट्रीमिंग कैप्चर करने योग्य साउंड वेव को एक मजबूत संदर्भ के रूप में मानना चाहिए ताकि समय से पहले विनाश को रोका जा सके (उदाहरण के लिए, ब्लूप्रिंट्स में इसे एक अलग वेरिएबल को असाइन करके या C++ में UPROPERTY()
का उपयोग करके)।
कैप्चर शुरू और बंद करना
आप सरल फंक्शन कॉल के साथ ऑडियो कैप्चर शुरू और बंद कर सकते हैं:
- Blueprint
- C++
// Assuming PixelStreamingSoundWave is a reference to a UPixelStreamingCapturableSoundWave object
// Start capturing audio (the device ID parameter is ignored for Pixel Streaming)
PixelStreamingSoundWave->StartCapture(0);
// Stop capturing audio
PixelStreamingSoundWave->StopCapture();
StartCapture
में DeviceId
पैरामीटर को Pixel Streaming Capturable Sound Waves के लिए नजरअंदाज किया जाता है, क्योंकि कैप्चर स्रोत स्वचालित रूप से या आपके द्वारा सेट किए गए प्लेयर इंफो द्वारा निर्धारित किया जाता है।
कैप्चर स्थिति की जाँच करना
आप जाँच सकते हैं कि क्या साउंड वेव वर्तमान में ऑडियो कैप्चर कर रहा है:
- Blueprint
- C++
// Assuming PixelStreamingSoundWave is a reference to a UPixelStreamingCapturableSoundWave object
bool bIsCapturing = PixelStreamingSoundWave->IsCapturing();
पूर्ण उदाहरण
यहाँ पिक्सेल स्ट्रीमिंग ऑडियो कैप्चर सेट अप करने का एक पूर्ण उदाहरण है:
- Blueprint
- C++
यह पिक्सेल स्ट्रीमिंग क्लाइंट से ऑडियो डेटा कैप्चर करने के लिए एक बेसिक कोड उदाहरण है।
यह उदाहरण EXAMPLEMODULE
मॉड्यूल के अंदर UPixelStreamingAudioExample
क्लास में स्थित CapturePixelStreamingAudioExample
फंक्शन का उपयोग करता है।
उदाहरण को सफलतापूर्वक चलाने के लिए, .Build.cs फाइल में PublicDependencyModuleNames
या PrivateDependencyModuleNames
में RuntimeAudioImporter
और PixelStreaming
मॉड्यूल्स को जोड़ना सुनिश्चित करें, साथ ही अपने प्रोजेक्ट की .uproject फाइल में भी।
#pragma once
#include "CoreMinimal.h"
#include "UObject/Object.h"
#include "PixelStreamingAudioExample.generated.h"
UCLASS(BlueprintType)
class EXAMPLEMODULE_API UPixelStreamingAudioExample : public UObject
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable)
void CapturePixelStreamingAudioExample();
private:
// Keep a strong reference to prevent garbage collection
UPROPERTY()
class UPixelStreamingCapturableSoundWave* PixelStreamingSoundWave;
};
#include "PixelStreamingAudioExample.h"
#include "Sound/PixelStreamingCapturableSoundWave.h"
#include "Kismet/GameplayStatics.h"
void UPixelStreamingAudioExample::CapturePixelStreamingAudioExample()
{
// Create a Pixel Streaming Capturable Sound Wave
PixelStreamingSoundWave = UPixelStreamingCapturableSoundWave::CreatePixelStreamingCapturableSoundWave();
// Start capturing audio
PixelStreamingSoundWave->StartCapture(0);
// Play the sound wave to hear the captured audio
UGameplayStatics::PlaySound2D(GetWorld(), PixelStreamingSoundWave);
// Set up a timer to stop capture after 30 seconds (just for demonstration)
FTimerHandle TimerHandle;
GetWorld()->GetTimerManager().SetTimer(TimerHandle, [this]()
{
PixelStreamingSoundWave->StopCapture();
}, 30.0f, false);
}
एकाधिक पिक्सेल स्ट्रीमिंग प्लेयर्स के साथ कार्य करना
ऐसे परिदृश्यों में जहां आपके पास एक साथ कई पिक्सेल स्ट्रीमिंग क्लाइंट्स जुड़े हुए हैं, आपको विशिष्ट प्लेयर्स से ऑडियो कैप्चर करने की आवश्यकता हो सकती है। निम्नलिखित सुविधाएँ आपको इसे प्रबंधित करने में मदद करती हैं।
उपलब्ध पिक्सेल स्ट्रीमिंग प्लेयर्स प्राप्त करना
यह पहचानने के लिए कि कौन से पिक्सेल स्ट्रीमिंग प्लेयर्स जुड़े हुए हैं:
- Blueprint
- C++
UPixelStreamingCapturableSoundWave::GetAvailablePixelStreamingPlayers(FOnGetAvailablePixelStreamingPlayersResultNative::CreateWeakLambda(this, [](const TArray<FPixelStreamingPlayerInfo_RAI>& AvailablePlayers)
{
// Handle the list of available players
for (const FPixelStreamingPlayerInfo_RAI& PlayerInfo : AvailablePlayers)
{
UE_LOG(LogTemp, Log, TEXT("Available player: %s on streamer: %s"), *PlayerInfo.PlayerId, *PlayerInfo.StreamerId);
}
}));
प्लेयर को कैप्चर करने के लिए सेट करना
जब आपको किसी विशिष्ट प्लेयर से कैप्चर करने की आवश्यकता हो:
- Blueprint
- C++
// Assuming PixelStreamingSoundWave is a reference to a UPixelStreamingCapturableSoundWave object
// and PlayerInfo is a FPixelStreamingPlayerInfo_RAI object from GetAvailablePixelStreamingPlayers
PixelStreamingSoundWave->PlayerInfo = PlayerInfo;
यदि आप प्लेयर आईडी खाली छोड़ देते हैं, तो साउंड वेव स्वचालित रूप से पहले उपलब्ध प्लेयर को सुनना शुरू कर देगी जो कनेक्ट होता है। यह डिफ़ॉल्ट व्यवहार है और सिंगल-प्लेयर परिदृश्यों के लिए अच्छी तरह से काम करता है।
सामान्य उपयोग के मामले
वॉयस चैट कार्यान्वयन
आप रिमोट उपयोगकर्ताओं और स्थानीय खिलाड़ियों के बीच वॉयस चैट लागू करने के लिए पिक्सेल स्ट्रीमिंग कैप्चर करने योग्य साउंड वेव का उपयोग कर सकते हैं:
- प्रत्येक कनेक्टेड प्लेयर के लिए एक पिक्सेल स्ट्रीमिंग कैप्चर करने योग्य साउंड वेव बनाएं
- एक सिस्टम सेट अप करें जो प्रबंधित करे कि वर्तमान में कौन से खिलाड़ी बोल रहे हैं
- यूजर्स के बोलने का पता लगाने के लिए वॉयस एक्टिविटी डिटेक्शन सिस्टम का उपयोग करें
- यदि आवश्यक हो तो अनरियल इंजन के ऑडियो सिस्टम का उपयोग करके ऑडियो को स्पेशियलाइज़ करें
स्पीच रिकग्निशन के साथ वॉयस कमांड्स
आप Runtime Speech Recognizer प्लगइन के साथ इस फीचर को जोड़कर रिमोट यूजर्स के लिए वॉयस कमांड रिकग्निशन लागू कर सकते हैं:
- पिक्सेल स्ट्रीमिंग कैप्चर करने योग्य साउंड वेव का उपयोग करके पिक्सेल स्ट्रीमिंग क्लाइंट्स से ऑडियो कैप्चर करें
- कैप्चर किए गए ऑडियो को सीधे Runtime Speech Recognizer को फीड करें
- अपने गेम लॉजिक में पहचाने गए टेक्स्ट को प्रोसेस करें
Runtime Speech Recognizer उदाहरणों में स्टैंडर्ड कैप्चर करने योग्य साउंड वेव को पिक्सेल स्ट्रीमिंग कैप्चर करने योग्य साउंड वेव से बदलें, और यह पिक्सेल स्ट्रीमिंग ऑडियो इनपुट के साथ सहज रूप से काम करेगा।
रिमोट यूजर ऑडियो रिकॉर्डिंग
आप बाद में प्लेबैक के लिए रिमोट यूजर्स से ऑडियो रिकॉर्ड कर सकते हैं:
- पिक्सेल स्ट्रीमिंग कैप्चर करने योग्य साउंड वेव का उपयोग करके ऑडियो कैप्चर करें
- एक्सपोर्ट ऑडियो का उपयोग करके कैप्चर किए गए ऑडियो को फाइल में एक्सपोर्ट करें
- फाइल को बाद में उपयोग या विश्लेषण के लिए सहेजें