Pixel Streaming Ses Yakalama
Pixel Streaming, Unreal Engine için oluşturulmuş, işlenmiş kareleri aktaran ve WebRTC üzerinden giriş/çıkışı senkronize eden bir eklentidir. Uygulama sunucu tarafında çalışırken, istemci tarafı işleme ve kullanıcı etkileşimini gerçekleştirir. Pixel Streaming ve kurulumu hakkında daha fazla ayrıntı için Pixel Streaming Dokümantasyonu sayfasına bakın.
Pixel Streaming vs Pixel Streaming 2
Bu eklenti, Unreal Engine'de mevcut olan her iki Pixel Streaming sürümünü de destekler:
- Pixel Streaming - Orijinal eklenti, UE 5.2'den beri mevcut ve mevcut motor sürümlerinde hala aktif olarak kullanılıyor
- Pixel Streaming 2 - UE 5.5'te geliştirilmiş bir dahili mimari ile yeni nesil bir uygulama olarak tanıtıldı. Pixel Streaming 2 hakkında daha fazla bilgi edinin
Her iki sürüm de en son Unreal Engine sürümlerinde (UE 5.6 dahil) tam olarak desteklenmekte ve mevcuttur. Projenizin Pixel Streaming kurulumuyla eşleşen sürümü seçin.
Her iki sürüm için API aynıdır, tek fark Pixel Streaming 2 sınıflarının ve işlevlerinin isimlerinde "2" bulunmasıdır (örneğin, UPixelStreamingCapturableSoundWave vs UPixelStreaming2CapturableSoundWave).
Uyumluluk
Bu çözüm şunlarla çalışır:
- Resmi Pixel Streaming altyapısı (Epic Games referans uygulaması)
- Üçüncü taraf Pixel Streaming sağlayıcıları dahil:
- Vagon.io
- Arcane Mirage
- Eagle 3D Streaming
- Diğer WebRTC tabanlı akış çözümleri
- İşletim sistemleri: Windows ve Linux sunucular
Uygulama, bu ortamlar genelinde test edilmiştir ve kullanılan Pixel Streaming barındırma çözümünden bağımsız olarak doğru şekilde çalışır.
Uzantı Eklentisi Kurulumu
Bu özellik, Runtime Audio Importer eklentisinin bir uzantısı olarak sağlanır. Kullanmak için şunları yapmanız gerekir:
- Runtime Audio Importer eklentisinin projenizde zaten kurulu olduğundan emin olun
- Pixel Streaming sürümünüz için uzantı eklentisini indirin:
- Pixel Streaming: Google Drive'dan İndir
- Pixel Streaming 2: Google Drive'dan İndir
- İndirilen arşivden klasörü projenizin
Pluginsklasörüne çıkarın (bu klasör yoksa oluşturun) - Projenizi yeniden oluşturun (bu uzantı bir C++ projesi gerektirir)
- Bu uzantılar kaynak kodu olarak sağlanır ve kullanmak için bir C++ projesi gerektirir
- Pixel Streaming uzantısı: UE 5.2 ve sonrasında desteklenir
- Pixel Streaming 2 uzantısı: UE 5.5 ve sonrasında desteklenir
- Eklentileri manuel olarak nasıl oluşturacağınız hakkında daha fazla bilgi için Eklenti Oluşturma eğitimine bakın
Genel Bakış
Pixel Streaming Capturable Sound Wave, standart Capturable Sound Wave'ı genişleterek doğrudan Pixel Streaming istemcilerinin mikrofonlarından ses yakalamaya olanak tanır. Bu özellik şunları yapmanızı sağlar:
- Pixel Streaming üzerinden bağlanan tarayıcılardan ses yakalama
- Belirli oyuncular/akranlardan gelen sesi işleme
- Uzaktaki kullanıcılardan sesli sohbet, ses komutları veya ses kaydı uygulama
Temel Kullanım
Bir Pixel Streaming Capturable Sound Wave Oluşturma
İlk olarak, bir Pixel Streaming Capturable Sound Wave nesnesi oluşturmanız gerekir:
- Pixel Streaming
- Pixel Streaming 2
- Blueprint
- C++
![]()
PixelStreamingSoundWave = UPixelStreamingCapturableSoundWave::CreatePixelStreamingCapturableSoundWave();
- Blueprint
- C++
Create Pixel Streaming 2 Capturable Sound Wave düğümünü kullanın (Pixel Streaming ile aynı ancak isminde "2" var)
PixelStreamingSoundWave = UPixelStreaming2CapturableSoundWave::CreatePixelStreaming2CapturableSoundWave();
Pixel Streaming Capturable Sound Wave'ın erken yok edilmesini önlemek için onu güçlü bir referans olarak ele almalısınız (örneğin, Blueprints'te ayrı bir değişkene atayarak veya C++'ta UPROPERTY() kullanarak).
Yakalamayı Başlatma ve Durdurma
Ses yakalamayı basit fonksiyon çağrıları ile başlatıp durdurabilirsiniz:
- 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 Yakalanabilir Ses Dalgası ile aynı Yakalamayı Başlat ve Yakalamayı Durdur düğümlerini kullanın
// 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 içindeki DeviceId parametresi, Pixel Streaming Capturable Sound Waves için göz ardı edilir, çünkü yakalama kaynağı otomatik olarak veya ayarladığınız oyuncu bilgisine göre belirlenir.
Yakalama Durumunu Kontrol Etme
Ses dalgasının şu anda ses yakalayıp yakalamadığını kontrol edebilirsiniz:
- 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 Yakalanabilir Ses Dalgası ile aynı Is Capturing düğümünü kullanın
// Assuming PixelStreamingSoundWave is a reference to a UPixelStreaming2CapturableSoundWave object
bool bIsCapturing = PixelStreamingSoundWave->IsCapturing();
Tam Örnek
İşte Pixel Streaming ses yakalama kurulumunun tam bir örneği:
- Pixel Streaming
- Pixel Streaming 2
- Blueprint
- C++
![]()
Bu, bir Pixel Streaming istemcisinden ses verisi yakalamak için temel bir kod örneğidir.
Örnek, EXAMPLEMODULE modülü içindeki UPixelStreamingAudioExample sınıfında bulunan CapturePixelStreamingAudioExample işlevini kullanır.
Örneği başarıyla çalıştırmak için, hem RuntimeAudioImporter hem de PixelStreaming modüllerini .Build.cs dosyasındaki PublicDependencyModuleNames veya PrivateDependencyModuleNames listesine ve ayrıca projenizin .uproject dosyasına eklediğinizden emin olun.
#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++
Blueprint kurulumu Pixel Streaming ile aynıdır, ancak bunun yerine Create Pixel Streaming 2 Capturable Sound Wave düğümünü kullanın
Bu, bir Pixel Streaming 2 istemcisinden ses verisi yakalamak için temel bir kod örneğidir.
Örnek, EXAMPLEMODULE modülü içindeki UPixelStreaming2AudioExample sınıfında bulunan CapturePixelStreaming2AudioExample işlevini kullanır.
Örneği başarıyla çalıştırmak için, hem RuntimeAudioImporter hem de PixelStreaming2 modüllerini .Build.cs dosyasındaki PublicDependencyModuleNames veya PrivateDependencyModuleNames listesine ve projenizin .uproject dosyasına eklediğinizden emin olun.
#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);
}
Çoklu Pixel Streaming Oyuncularıyla Çalışma
Aynı anda birden fazla Pixel Streaming istemcisinin bağlı olduğu senaryolarda, belirli oyunculardan ses yakalamanız gerekebilir. Aşağıdaki özellikler bunu yönetmenize yardımcı olur.
Mevcut Pixel Streaming Oyuncularını Alma
Hangi Pixel Streaming oyuncularının bağlı olduğunu belirlemek için:
- 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 düğümünü kullanın
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);
}
}));
Yakalanacak Oyuncuyu Ayarlama
Belirli bir oyuncudan yakalama yapmanız gerektiğinde:
- 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++
Set Player To Capture From düğümünü Pixel Streaming 2 Capturable Sound Wave'ınızla kullanın
// Assuming PixelStreamingSoundWave is a reference to a UPixelStreaming2CapturableSoundWave object
// and PlayerInfo is a FPixelStreaming2PlayerInfo_RAI object from GetAvailablePixelStreaming2Players
PixelStreamingSoundWave->PlayerInfo = PlayerInfo;
Eğer Oyuncu ID'sini boş bırakırsanız, ses dalgası otomatik olarak bağlanan ilk mevcut oyuncuyu dinleyecektir. Bu varsayılan davranıştır ve tek oyunculu senaryolar için iyi çalışır.
Yaygın Kullanım Senaryoları
Sesli Sohbet Uygulaması
Uzak kullanıcılar ve yerel oyuncular arasında sesli sohbet uygulamak için Pixel Streaming Yakalanabilir Ses Dalgalarını kullanabilirsiniz:
- Bağlı her oyuncu için bir Pixel Streaming Yakalanabilir Ses Dalgası oluşturun
- Hangi oyuncuların şu anda konuştuğunu yönetmek için bir sistem kurun
- Kullanıcıların ne zaman konuştuğunu tespit etmek için Ses Aktivite Tespiti sistemini kullanın
- Gerekirse Unreal Engine'in ses sistemini kullanarak sesi mekansallaştırın
Konuşma Tanıma ile Sesli Komutlar
Bu özelliği Runtime Speech Recognizer eklentisi ile birleştirerek uzak kullanıcılar için sesli komut tanıma uygulayabilirsiniz:
- Pixel Streaming Yakalanabilir Ses Dalgası kullanarak Pixel Streaming istemcilerinden ses yakalayın
- Yakalanan sesi doğrudan Runtime Speech Recognizer'a besleyin
- Tanınan metni oyun mantığınızda işleyin
Runtime Speech Recognizer örneklerindeki standart Yakalanabilir Ses Dalgasını bir Pixel Streaming Yakalanabilir Ses Dalgası (veya Pixel Streaming 2 Yakalanabilir Ses Dalgası) ile değiştirmeniz yeterlidir ve bu, Pixel Streaming ses girişiyle sorunsuz çalışacaktır.
Uzak Kullanıcı Sesini Kaydetme
Daha sonra oynatmak için uzak kullanıcılardan ses kaydedebilirsiniz:
- Pixel Streaming Yakalanabilir Ses Dalgası kullanarak ses yakalayın
- Yakalanan sesi Ses Dışa Aktar kullanarak bir dosyaya aktarın
- Dosyayı daha sonra kullanmak veya analiz etmek için kaydedin