whoissunshijia / ue4-ffmpeg

Record game screen and push RTMP in UE4.22
124 stars 48 forks source link

升级更新到UE5后运行崩溃? #11

Open waterfu1124 opened 2 years ago

waterfu1124 commented 2 years ago

感谢作者,很好用的插件!加了个手动停止录屏的函数调用。4.26使用正常,升级到UE5之后编译成功,不过运行程序的话直接就崩溃了,大佬有尝试升级到UE5吗? UnrealEditor_UFFmpeg!UFFmpegDirector::GetScreenVideoData() [E:\Waters\UE5\VideoRecordUE5\Plugins\UFFmpeg\Source\UFFmpeg\Private\FFmpegDirector.cpp:220] UnrealEditor_UFFmpeg!UFFmpegDirector::OnBackBufferReady_RenderThread() [E:\Waters\UE5\VideoRecordUE5\Plugins\UFFmpeg\Source\UFFmpeg\Private\FFmpegDirector.cpp:195] UnrealEditor_UFFmpeg!TBaseUObjectMethodDelegateInstance<0,UFFmpegDirector,void __cdecl(SWindow &,TRefCountPtr const &),FDefaultDelegateUserPolicy>::ExecuteIfSafe() [C:\Program Files\Epic Games\UE_5.0\Engine\Source\Runtime\Core\Public\Delegates\DelegateInstancesImpl.h:611]

upbit commented 2 years ago

我这边尝试运行也是crash在这里,FFmpegDirector.cpp:222: LockTexture2D()这行。 @waterfu1124 有找到什么相关的资料吗?

void UFFmpegDirector::GetScreenVideoData()
{
    FRHICommandListImmediate& list = GRHICommandList.GetImmediateCommandList();
    uint8* TextureData = (uint8*)list.LockTexture2D(GameTexture->GetTexture2D(), 0, EResourceLockMode::RLM_ReadOnly, LolStride, false);
    if(Runnable)
        Runnable->InsertVideo(TextureData);
    list.UnlockTexture2D(GameTexture, 0, false);
}

堆栈:

[2022.09.27-12.16.55:354][319]LogWindows: Error: === Critical error: ===
[2022.09.27-12.16.55:354][319]LogWindows: Error: 
[2022.09.27-12.16.55:354][319]LogWindows: Error: Fatal error: [File:D:\build\++UE5\Sync\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp] [Line: 934] 
[2022.09.27-12.16.55:354][319]LogWindows: Error: Rendering thread exception:
[2022.09.27-12.16.55:354][319]LogWindows: Error: Fatal error!
[2022.09.27-12.16.55:354][319]LogWindows: Error: 
[2022.09.27-12.16.55:354][319]LogWindows: Error: Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x0000000000000128
[2022.09.27-12.16.55:354][319]LogWindows: Error: 
[2022.09.27-12.16.55:354][319]LogWindows: Error: [Callstack] 0x00007ffaa4927e9a UnrealEditor-D3D12RHI.dll!TD3D12Texture2D<FD3D12BaseTexture2D>::Lock() [D:\build\++UE5\Sync\Engine\Source\Runtime\D3D12RHI\Private\D3D12Texture.cpp:1998]
[2022.09.27-12.16.55:354][319]LogWindows: Error: [Callstack] 0x00007ffaa4929ab1 UnrealEditor-D3D12RHI.dll!FD3D12DynamicRHI::LockTexture2D_RenderThread() [D:\build\++UE5\Sync\Engine\Source\Runtime\D3D12RHI\Private\D3D12Texture.cpp:2492]
[2022.09.27-12.16.55:354][319]LogWindows: Error: [Callstack] 0x00007ffaa6adc19c UnrealEditor-UFFmpeg.dll!UFFmpegDirector::GetScreenVideoData() [E:\UnrealProjects\UE5_ffmpeg\Plugins\UFFMpeg\Source\UFFMpeg\Private\FFmpegDirector.cpp:222]
[2022.09.27-12.16.55:354][319]LogWindows: Error: [Callstack] 0x00007ffaa6ade447 UnrealEditor-UFFmpeg.dll!UFFmpegDirector::OnBackBufferReady_RenderThread() [E:\UnrealProjects\UE5_ffmpeg\Plugins\UFFMpeg\Source\UFFMpeg\Private\FFmpegDirector.cpp:197]
[2022.09.27-12.16.55:354][319]LogWindows: Error: [Callstack] 0x00007ffaa6adb84c UnrealEditor-UFFmpeg.dll!TBaseUObjectMethodDelegateInstance<0,UFFmpegDirector,void __cdecl(SWindow &,TRefCountPtr<FRHITexture2D> const &),FDefaultDelegateUserPolicy>::ExecuteIfSafe() [D:\Epic\UE_5.0\Engine\Source\Runtime\Core\Public\Delegates\DelegateInstancesImpl.h:611]
[2022.09.27-12.16.55:354][319]LogWindows: Error: [Callstack] 0x00007ffaab2761c2 UnrealEditor-SlateRHIRenderer.dll!FSlateRHIRenderer::DrawWindow_RenderThread() [D:\build\++UE5\Sync\Engine\Source\Runtime\SlateRHIRenderer\Private\SlateRHIRenderer.cpp:1110]
[2022.09.27-12.16.55:354][319]LogWindows: Error: [Callstack] 0x00007ffaab269ec7 UnrealEditor-SlateRHIRenderer.dll!TEnqueueUniqueRenderCommandType<`FSlateRHIRenderer::DrawWindows_Private'::`39'::SlateDrawWindowsCommandName,<lambda_f9feabdceba9d88a5c7b2ca3d59100d9> >::DoTask() [D:\build\++UE5\Sync\Engine\Source\Runtime\RenderCore\Public\RenderingThread.h:193]
[2022.09.27-12.16.55:354][319]LogWindows: Error: [Callstack] 0x00007ffaab27ef9a UnrealEditor-SlateRHIRenderer.dll!TGraphTask<TEnqueueUniqueRenderCommandType<`FSlateRHIRenderer::DrawWindows_Private'::`39'::SlateDrawWindowsCommandName,<lambda_f9feabdceba9d88a5c7b2ca3d59100d9> > >::ExecuteTask() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Public\Async\TaskGraphInterfaces.h:975]
[2022.09.27-12.16.55:354][319]LogWindows: Error: [Callstack] 0x00007ffad9d73a9d UnrealEditor-Core.dll!FNamedTaskThread::ProcessTasksNamedThread() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:753]
[2022.09.27-12.16.55:354][319]LogWindows: Error: [Callstack] 0x00007ffad9d73f3e UnrealEditor-Core.dll!FNamedTaskThread::ProcessTasksUntilQuit() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:642]
[2022.09.27-12.16.55:354][319]LogWindows: Error: [Callstack] 0x00007ffad9d742e1 UnrealEditor-Core.dll!FTaskGraphCompatibilityImplementation::ProcessThreadUntilRequestReturn() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:2115]
[2022.09.27-12.16.55:354][319]LogWindows: Error: [Callstack] 0x00007ffae824976b UnrealEditor-RenderCore.dll!RenderingThreadMain() [D:\build\++UE5\Sync\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp:380]
[2022.09.27-12.16.55:354][319]LogWindows: Error: [Callstack] 0x00007ffae824d158 UnrealEditor-RenderCore.dll!FRenderingThread::Run() [D:\build\++UE5\Sync\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp:527]
[2022.09.27-12.16.55:354][319]LogWindows: Error: [Callstack] 0x00007ffada447a2b UnrealEditor-Core.dll!FRunnableThreadWin::Run() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Windows\WindowsRunnableThread.cpp:146]
[2022.09.27-12.16.55:354][319]LogWindows: Error: [Callstack] 0x00007ffada440a90 UnrealEditor-Core.dll!FRunnableThreadWin::GuardedRun() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Windows\WindowsRunnableThread.cpp:76]
[2022.09.27-12.16.55:354][319]LogWindows: Error: [Callstack] 0x00007ffb3a897034 KERNEL32.DLL!UnknownFunction []
[2022.09.27-12.16.55:354][319]LogWindows: Error: [Callstack] 0x00007ffb3b142651 ntdll.dll!UnknownFunction []
upbit commented 2 years ago

可以调试的工程在这里:https://github.com/upbit/ue5-ffmpeg

waterfu1124 commented 2 years ago

你解决问题啦,可以可以感谢感谢!

可以调试的工程在这里:https://github.com/upbit/ue5-ffmpeg

你解决问题啦,可以可以感谢感谢!

upbit commented 2 years ago

你解决问题啦,可以可以感谢感谢!

可以调试的工程在这里:https://github.com/upbit/ue5-ffmpeg

你解决问题啦,可以可以感谢感谢!

并没有,只有个48字节的空文件。暂时没找到DX12崩溃的相关资料。不过你可以试试DX11,之前我 DX12+ NDI tools 5 也是崩溃,换DX11正常

waterfu1124 commented 2 years ago

嗯抽空试试,之前作者在群里说会更新最新版上去,不过几个月过去了估计是忙忘了

water @.***

 

------------------ 原始邮件 ------------------ 发件人: "whoissunshijia/ue4-ffmpeg" @.>; 发送时间: 2022年9月28日(星期三) 上午10:07 @.>; @.**@.>; 主题: Re: [whoissunshijia/ue4-ffmpeg] 升级更新到UE5后运行崩溃? (Issue #11)

你解决问题啦,可以可以感谢感谢!

可以调试的工程在这里:https://github.com/upbit/ue5-ffmpeg

你解决问题啦,可以可以感谢感谢!

并没有,只有个48字节的空文件。暂时没找到DX12崩溃的相关资料。不过你可以试试DX11,之前我 DX12+ NDI tools 5 也是崩溃,换DX11正常

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

upbit commented 2 years ago

如果有处理方法的话,也可以帮忙指点下。验证后我来提交MR

另外,ffmpeg的编译方法能共享下吗?替换了个自己的ffmpeg遇到点问题

upbit commented 2 years ago

并没有,只有个48字节的空文件。暂时没找到DX12崩溃的相关资料。不过你可以试试DX11,之前我 DX12+ NDI tools 5 也是崩溃,换DX11正常

image

https://dev.epicgames.com/community/learning/tutorials/aqV9/render-hardware-interface-rhi 果然是这个原因。切换RHI到DX11后捕获正常,我更新下例子工程

RHI+DX12的资料估计得找下如何处理

baokeqin commented 2 years ago

可以调试的工程在这里:https://github.com/upbit/ue5-ffmpeg

你好,我是个新手,打开工程文件的时候报错,麻烦可以指导一下吗

严重性 代码 说明 项目 文件 行 禁止显示状态 错误 Unable to instantiate module 'UnrealEd': Unable to instantiate UnrealEd module for non-editor targets. UE5_ffmpeg X:\UE5\ue5-ffmpeg-master\Intermediate\ProjectFiles\UnrealBuildTool 1

waterfu1124 commented 1 year ago

如果有处理方法的话,也可以帮忙指点下。验证后我来提交MR

另外,ffmpeg的编译方法能下共享吗?替换了一个自己的ffmpeg遇到点问题

额我就直接用的作者的插件进行编译,好像没什么能共享的呀

november15 commented 1 year ago

并没有,只有个48字节的空文件。暂时没找到DX12崩溃的相关资料。不过你可以试试DX11,之前我 DX12+ NDI tools 5 也是崩溃,换DX11正常

image

https://dev.epicgames.com/community/learning/tutorials/aqV9/render-hardware-interface-rhi 果然是这个原因。切换RHI到DX11后捕获正常,我更新下例子工程

RHI+DX12的资料估计得找下如何处理

你好,请问有解决DX12崩溃的问题吗?可以指点一下

upbit commented 1 year ago

没有找到对应的资料,后面是切换DX11做的。。

november15 commented 1 year ago

好的,谢谢

Zhou Hao @.***> 于2023年3月14日周二 22:01写道:

没有找到对应的资料,后面是切换DX11做的。。

— Reply to this email directly, view it on GitHub https://github.com/whoissunshijia/ue4-ffmpeg/issues/11#issuecomment-1468160306, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACWJJTY7EX6VXAUIPY2DZ73W4B24LANCNFSM5X6CAY6A . You are receiving this because you commented.Message ID: @.***>

sunsichao123 commented 10 months ago

我发现用DX12录制的会极大的降低帧率,太卡了

like-coder commented 4 months ago

你们推流正常吗?我推流在avformat_write_header(out_format_context, NULL) < 0在370这个行崩溃,也不知道是声明原因