पिक्सेल स्ट्रीमिंग ऑडियो कैप्चर
पिक्सेल स्ट्रीमिंग अनरियल इंजन के लिए एक प्लगइन है जो रेंडर किए गए फ्रेम्स को स्ट्रीम करता है और WebRTC के माध्यम से इनपुट/आउटपुट को सिंक्रनाइज़ करता है। एप्लिकेशन सर्वर साइड पर चलता है, जबकि क्लाइंट साइड रेंडरिंग और उपयोगकर्ता इंटरैक्शन को संभालता है। पिक्सेल स्ट्रीमिंग और सेटअप के बारे में अधिक जानकारी के लिए पिक्सेल स्ट्रीमिंग डॉक्यूमेंटेशन देखें।
पिक्सेल स्ट्रीमिंग बनाम पिक्सेल स्ट्रीमिंग 2
यह प्लगइन अनरियल इंजन में उपलब्ध दोनों पिक्सेल स्ट्रीमिंग संस्करणों का समर्थन करता है:
- पिक्सेल स्ट्रीमिंग - मूल प्लगइन, UE 5.2 से उपलब्ध और वर्तमान इंजन संस्करणों में अभी भी सक्रिय रूप से उपयोग किया जाता है
- पिक्सेल स्ट्रीमिंग 2 - UE 5.5 में एक अगली पीढ़ी के कार्यान्वयन के रूप में पेश किया गया, जिसमें एक बेहतर आंतरिक आर्किटेक्चर है। पिक्सेल स्ट्रीमिंग 2 के बारे में अधिक जानें
दोनों संस्करण पूरी तरह से समर्थित हैं और नवीनतम अनरियल इंजन रिलीज़ में उपलब्ध हैं। अपने प्रोजेक्ट के पिक्सेल स्ट्रीमिंग सेटअप से मेल खाने वाले संस्करण का चयन करें।
दोनों संस्करणों के लिए API समान है, एकमात्र अंतर यह है कि पिक्सेल स्ट्रीमिंग 2 कक्षाओं और कार्यों के नामों में "2" शामिल होता है (उदाहरण के लिए, UPixelStreamingCapturableSoundWave बनाम UPixelStreaming2CapturableSoundWave)।
संगतता
यह समाधान निम्नलिखित के साथ काम करता है:
- आधिकारिक पिक्सेल स्ट्रीमिंग इन्फ्रास्ट्रक्चर (एपिक गेम्स संदर्भ कार्यान्वयन)
- थर्ड-पार्टी पिक्सेल स्ट्रीमिंग प्रदाता जिनमें शामिल हैं:
- Vagon.io
- Arcane Mirage
- Eagle 3D Streaming
- अन्य WebRTC-आधारित स्ट्रीमिंग समाधान
- ऑपरेटिंग सिस्टम: Windows और Linux सर्वर
कार्यान्वयन का इन वातावरणों में परीक्षण किया गया है और उपयोग किए गए पिक्सेल स्ट्रीमिंग होस्टिंग समाधान की परवाह किए बिना सही ढंग से कार्य करता है।
एक्सटेंशन प्लगइन इंस्टालेशन
यह सुविधा रनटाइम ऑडियो इम्पोर्टर प्लगइन के एक एक्सटेंशन के रूप में प्रदान की जाती है। इसका उपयोग करने के लिए, आपको यह करना होगा:
- सुनिश्चित करें कि रनटाइम ऑडियो इम्पोर्टर प्लगइन आपके प्रोजेक्ट में पहले से ही इंस्टॉल है
- अपने पिक्सेल स्ट्रीमिंग संस्करण के लिए एक्सटेंशन प्लगइन डाउनलोड करें:
- डाउनलोड की गई आर्काइव से फ़ोल्डर को अपने प्रोजेक्ट के
Pluginsफ़ोल्डर में निकालें (यदि यह फ़ोल्डर मौजूद नहीं है तो इसे बनाएं) - अपने प्रोजेक्ट को रीबिल्ड करें (इस एक्सटेंशन के लिए एक C++ प्रोजेक्ट की आवश्यकता होती है)
- ये एक्सटेंशन सोर्स कोड के रूप में प्रदान किए जाते हैं और उपयोग करने के लिए एक C++ प्रोजेक्ट की आवश्यकता होती है
- पिक्सेल स्ट्रीमिंग एक्सटेंशन: UE 5.2 और बाद में समर्थित
- पिक्सेल स्ट्रीमिंग 2 एक्सटेंशन: UE 5.5 और बाद में समर्थित
- प्लगइन्स को मैन्युअल रूप से बनाने के तरीके के बारे में अधिक जानकारी के लिए, बिल्डिंग प्लगइन्स ट्यूटोरियल देखें
अवलोकन
पिक्सेल स्ट्रीमिंग कैप्चर करने योग्य साउंड वेव मानक कैप्चर करने योग्य साउंड वेव का विस्तार करता है ताकि पिक्सेल स्ट्रीमिंग क्लाइंट्स के माइक्रोफोन से सीधे ऑडियो कैप्चर करने की अनुमति मिल सके। यह सुविधा आपको यह करने में सक्षम बनाती है:
- पिक्सेल स्ट्रीमिंग के माध्यम से जुड़े ब्राउज़रों से ऑडियो कैप्चर करें
- विशिष्ट खिलाड़ियों/साथियों से ऑडियो प्रोसेस करें
- रिमोट उपयोगकर्ताओं से वॉयस चैट, वॉयस कमांड, या ऑडियो रिकॉर्डिंग लागू करें
बेसिक उपयोग
पिक्सेल स्ट्रीमिंग कैप्चर करने योग्य साउंड वेव बनाना
सबसे पहले, आपको एक पिक्सेल स्ट्रीमिंग कैप्चर करने योग्य साउंड वेव ऑब्जेक्ट बनाने की आवश्यकता है:
- Pixel Streaming
- Pixel Streaming 2
- Blueprint
- C++
![]()
PixelStreamingSoundWave = UPixelStreamingCapturableSoundWave::CreatePixelStreamingCapturableSoundWave();
- Blueprint
- C++
Create Pixel Streaming 2 Capturable Sound Wave नोड का उपयोग करें (Pixel Streaming के समान लेकिन नाम में "2" के साथ)
PixelStreamingSoundWave = UPixelStreaming2CapturableSoundWave::CreatePixelStreaming2CapturableSoundWave();
आपको Pixel Streaming Capturable Sound Wave को एक मजबूत संदर्भ के रूप में व्यवहार करना चाहिए ताकि समय से पहले विनाश को रोका जा सके (उदाहरण के लिए, Blueprints में इसे एक अलग वेरिएबल को असाइन करके या C++ में UPROPERTY() का उपयोग करके)।
कैप्चर शुरू करना और रोकना
आप सरल फ़ंक्शन कॉल के साथ ऑडियो कैप्चर शुरू और रोक सकते हैं:
- Pixel Streaming
- Pixel Streaming 2
- 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();
- Blueprint
- C++
अपने Pixel Streaming 2 Capturable Sound Wave के साथ समान Start Capture और Stop Capture नोड्स का उपयोग करें
// Assuming PixelStreamingSoundWave is a reference to a UPixelStreaming2CapturableSoundWave object
// Start capturing audio (the device ID parameter is ignored for Pixel Streaming 2)
PixelStreamingSoundWave->StartCapture(0);
// Stop capturing audio
PixelStreamingSoundWave->StopCapture();
StartCapture में DeviceId पैरामीटर को पिक्सेल स्ट्रीमिंग कैप्चर करने योग्य साउंड वेव्स के लिए नजरअंदाज कर दिया जाता है, क्योंकि कैप्चर स्रोत स्वचालित रूप से या आपके द्वारा सेट किए गए प्लेयर इंफो द्वारा निर्धारित किया जाता है।
कैप्चर स्थिति की जाँच करना
आप जाँच सकते हैं कि साउंड वेव वर्तमान में ऑडियो कैप्चर कर रहा है या नहीं:
- Pixel Streaming
- Pixel Streaming 2
- Blueprint
- C++

// Assuming PixelStreamingSoundWave is a reference to a UPixelStreamingCapturableSoundWave object
bool bIsCapturing = PixelStreamingSoundWave->IsCapturing();
- Blueprint
- C++
अपने Pixel Streaming 2 Capturable Sound Wave के साथ समान Is Capturing नोड का उपयोग करें
// Assuming PixelStreamingSoundWave is a reference to a UPixelStreaming2CapturableSoundWave object
bool bIsCapturing = PixelStreamingSoundWave->IsCapturing();
पूर्ण उदाहरण
यहाँ पिक्सेल स्ट्रीमिंग ऑडियो कैप्चर सेट करने का एक पूर्ण उदाहरण दिया गया है:
- Pixel Streaming
- Pixel Streaming 2
- Blueprint
- C++
![]()
यह पिक्सेल स्ट्रीमिंग क्लाइंट से ऑडियो डेटा कैप्चर करने के लिए एक बुनियादी कोड उदाहरण है।
यह उदाहरण EXAMPLEMODULE मॉड्यूल के भीतर UPixelStreamingAudioExample क्लास में स्थित CapturePixelStreamingAudioExample फ़ंक्शन का उपयोग करता है।
उदाहरण को सफलतापूर्वक चलाने के लिए, सुनिश्चित करें कि आपने RuntimeAudioImporter और PixelStreaming दोनों मॉड्यूल को .Build.cs फ़ाइल में PublicDependencyModuleNames या PrivateDependencyModuleNames में, साथ ही अपने प्रोजेक्ट की .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++
ब्लूप्रिंट सेटअप पिक्सेल स्ट्रीमिंग के समान है, लेकिन इसके बजाय Create Pixel Streaming 2 Capturable Sound Wave नोड का उपयोग करें
यह पिक्सेल स्ट्रीमिंग 2 क्लाइंट से ऑडियो डेटा कैप्चर करने के लिए एक बुनियादी कोड उदाहरण है।
यह उदाहरण EXAMPLEMODULE मॉड्यूल के भीतर UPixelStreaming2AudioExample क्लास में स्थित CapturePixelStreaming2AudioExample फ़ंक्शन का उपयोग करता है।
उदाहरण को सफलतापूर्वक चलाने के लिए, सुनिश्चित करें कि RuntimeAudioImporter और PixelStreaming2 दोनों मॉड्यूल को .Build.cs फ़ाइल में PublicDependencyModuleNames या PrivateDependencyModuleNames में, साथ ही अपने प्रोजेक्ट की .uproject फ़ाइल में जोड़ें।
#pragma once
#include "CoreMinimal.h"
#include "UObject/Object.h"
#include "PixelStreaming2AudioExample.generated.h"
UCLASS(BlueprintType)
class EXAMPLEMODULE_API UPixelStreaming2AudioExample : public UObject
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable)
void CapturePixelStreaming2AudioExample();
private:
// Keep a strong reference to prevent garbage collection
UPROPERTY()
class UPixelStreaming2CapturableSoundWave* PixelStreamingSoundWave;
};
#include "PixelStreaming2AudioExample.h"
#include "Sound/PixelStreaming2CapturableSoundWave.h"
#include "Kismet/GameplayStatics.h"
void UPixelStreaming2AudioExample::CapturePixelStreaming2AudioExample()
{
// Create a Pixel Streaming 2 Capturable Sound Wave
PixelStreamingSoundWave = UPixelStreaming2CapturableSoundWave::CreatePixelStreaming2CapturableSoundWave();
// 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);
}
एकाधिक पिक्सेल स्ट्रीमिंग प्लेयर्स के साथ कार्य करना
ऐसे परिदृश्यों में जहां आपके पास एक साथ कई पिक्सेल स्ट्रीमिंग क्लाइंट जुड़े हुए हैं, आपको विशिष्ट प्लेयर्स से ऑडियो कैप्चर करने की आवश्यकता हो सकती है। निम्नलिखित सुविधाएं आपको इसे प्रबंधित करने में मदद करती हैं।
उपलब्ध पिक्सेल स्ट्रीमिंग प्लेयर्स प्राप्त करना
यह पहचानने के लिए कि कौन से पिक्सेल स्ट्रीमिंग प्लेयर्स जुड़े हुए हैं:
- Pixel Streaming
- Pixel Streaming 2
- 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++
Get Available Pixel Streaming 2 Players नोड का उपयोग करें
UPixelStreaming2CapturableSoundWave::GetAvailablePixelStreaming2Players(FOnGetAvailablePixelStreaming2PlayersResultNative::CreateWeakLambda(this, [](const TArray<FPixelStreaming2PlayerInfo_RAI>& AvailablePlayers)
{
// Handle the list of available players
for (const FPixelStreaming2PlayerInfo_RAI& PlayerInfo : AvailablePlayers)
{
UE_LOG(LogTemp, Log, TEXT("Available player: %s on streamer: %s"), *PlayerInfo.PlayerId, *PlayerInfo.StreamerId);
}
}));
कैप्चर करने के लिए प्लेयर सेट करना
जब आपको किसी विशिष्ट प्लेयर से कैप्चर करने की आवश्यकता हो:
- Pixel Streaming
- Pixel Streaming 2
- Blueprint
- C++

// Assuming PixelStreamingSoundWave is a reference to a UPixelStreamingCapturableSoundWave object
// and PlayerInfo is a FPixelStreamingPlayerInfo_RAI object from GetAvailablePixelStreamingPlayers
PixelStreamingSoundWave->PlayerInfo = PlayerInfo;
- Blueprint
- C++
अपने Pixel Streaming 2 Capturable Sound Wave के साथ Set Player To Capture From नोड का उपयोग करें
// Assuming PixelStreamingSoundWave is a reference to a UPixelStreaming2CapturableSoundWave object
// and PlayerInfo is a FPixelStreaming2PlayerInfo_RAI object from GetAvailablePixelStreaming2Players
PixelStreamingSoundWave->PlayerInfo = PlayerInfo;
यदि आप Player ID खाली छोड़ते हैं, तो ध्वनि तरंग स्वचालित रूप से पहले उपलब्ध खिलाड़ी को सुनना शुरू कर देगी जो कनेक्ट होता है। यह डिफ़ॉल्ट व्यवहार है और एकल-खिलाड़ी परिदृश्यों के लिए अच्छी तरह काम करता है।
सामान्य उपयोग के मामले
वॉयस चैट कार्यान्वयन
आप दूरस्थ उपयोगकर्ताओं और स्थानीय खिलाड़ियों के बीच वॉयस चैट लागू करने के लिए Pixel Streaming Capturable Sound Waves का उपयोग कर सकते हैं:
- प्रत्येक कनेक्टेड खिलाड़ी के लिए एक Pixel Streaming Capturable Sound Wave बनाएं
- यह प्रबंधित करने के लिए एक प्रणाली स्थापित करें कि वर्तमान में कौन से खिलाड़ी बोल रहे हैं
- यह पता लगाने के लिए Voice Activity Detection प्रणाली का उपयोग करें कि उपयोगकर्ता कब बोल रहे हैं
- यदि आवश्यक हो तो Unreal Engine की ऑडियो प्रणाली का उपयोग करके ऑडियो को स्थानिक बनाएं
स्पीच रिकग्निशन के साथ वॉयस कमांड
आप Runtime Speech Recognizer प्लगइन के साथ इस सुविधा को जोड़कर दूरस्थ उपयोगकर्ताओं के लिए वॉयस कमांड रिकग्निशन लागू कर सकते हैं:
- Pixel Streaming Capturable Sound Wave का उपयोग करके Pixel Streaming क्लाइंट से ऑडियो कैप्चर करें
- कैप्चर किए गए ऑडियो को सीधे Runtime Speech Recognizer को फीड करें
- अपने गेम लॉजिक में पहचाने गए टेक्स्ट को प्रोसेस करें
बस Runtime Speech Recognizer उदाहरणों में मानक Capturable Sound Wave को एक Pixel Streaming Capturable Sound Wave (या Pixel Streaming 2 Capturable Sound Wave) से बदलें, और यह Pixel Streaming ऑडियो इनपुट के साथ सहज रूप से काम करेगा।
दूरस्थ उपयोगकर्ता ऑडियो रिकॉर्डिंग
आप बाद में प्लेबैक के लिए दूरस्थ उपयोगकर्ताओं से ऑडियो रिकॉर्ड कर सकते हैं:
- Pixel Streaming Capturable Sound Wave का उपयोग करके ऑडियो कैप्चर करें
- Export Audio का उपयोग करके कैप्चर किए गए ऑडियो को एक फ़ाइल में निर्यात करें
- फ़ाइल को बाद के उपयोग या विश्लेषण के लिए सहेजें