使用内置的 WebRTC API 在虚幻引擎 5 中创建 WebRTC 连接

问题描述 投票:0回答:1

我希望为特定的 VoiceChat 解决方案创建一个自定义 WebRTC 通道,该解决方案将在后台使用该技术。虚幻引擎已经有一个内置的WebRTC API,但它没有文档记录,而且我还没有找到任何使用它的公开示例。我正在寻找一个通用的示例解决方案,或者如何使用它来正确设置和使用它的文档。


我尝试深入研究 Unreal 的 PixelStreaming 解决方案,因为这是该 API 的主要用途,但它非常复杂。我可能解决的是将

"WebRTC", "libOpus"
模块添加到我的 .Build.cs 中,以及这两行来修复一些链接器问题:

PublicDefinitions.Add("NOMINMAX");
AddEngineThirdPartyPrivateStaticDependencies(Target, "OpenSSL");

我猜我需要使用

webrtc::CreatePeerConnectionFactory
,然后使用
PeerConnectionFactory->CreatePeerConnectionOrError
,但前者总是会导致崩溃,并显示以下崩溃日志:

未处理的异常:0x80000003

内核库 UnrealEditor_AudioTest!rtc::webrtc_checks_impl::UnreachableCodeReached() UnrealEditor_AudioTest!rtc::webrtc_checks_impl::FatalLog() UnrealEditor_AudioTest!cricket::WebRtcVoiceEngine::Init() UnrealEditor_AudioTest!cricket::CompositeMediaEngine::Init() UnrealEditor_AudioTest!cricket::ChannelManager::Create() UnrealEditor_AudioTest!std::vector >,std::allocator > > >::erase() UnrealEditor_AudioTest!rtc::Thread::Restart() UnrealEditor_AudioTest!rtc::Thread::QueuedTaskHandler::OnMessage() UnrealEditor_AudioTest!rtc::Thread::Dispatch() UnrealEditor_AudioTest!rtc::Thread::ProcessMessages() UnrealEditor_AudioTest!rtc::Thread::PreRun()

这并不能真正帮助我解决问题的根源。

我目前尝试拨打的方式是:

PeerConnectionFactory = webrtc::CreatePeerConnectionFactory(
    NetworkThread.Get(),   // Network thread
    WorkerThread.Get(),    // Worker thread
    SignallingThread.Get(), // Signaling thread
    nullptr,                // Audio device module
    webrtc::CreateAudioEncoderFactory<webrtc::AudioEncoderOpus>(),
    webrtc::CreateAudioDecoderFactory<webrtc::AudioDecoderOpus>(),
    nullptr,
    nullptr,
    nullptr,
    nullptr
);

但是根据我所读到的内容,两个audiofactory应该足以让它工作,但情况似乎并非如此。


我只在 stackoverflow 上发现了这个问题,尝试做类似的事情:Trouble Sending audio via custom AudioDeviceModule with WebRTC in C++

这就是我一直试图遵循的(与 PixelStreaming 解决方案相结合),但我仍然崩溃了。

c++ webrtc unreal-engine5 unreal
1个回答
0
投票

VoiceChat 作为 Epic Online Service 的一部分受到支持,请参阅 https://dev.epicgames.com/docs/game-services/real-time-communication-interface/voice,它在后台使用 WebRTC。

© www.soinside.com 2019 - 2024. All rights reserved.