一直在运行UE4.27和Oculus OVRlipsync上的lipsync项目,并且该项目在UE编辑器上运行得很好。为了将游戏打包到客户端,我开始面对与WAV文件中的烹饪帧序列相关的问题,导致打包应用程序崩溃。
由此产生的崩溃日志是
Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x0000024bc963002c
OVRLipSync
OVRLipSync
OVRLipSync
OVRLipSync
MyProject_Win64_Shipping!ovrLipSync_ProcessFrameEx() [\software\coretech\src\engines\tracking\facetracking\facewave\ovrlipsyncshim.cpp:389]
MyProject_Win64_Shipping!<lambda_04cfcd2176d25e5a0c33289e1c33f647>::operator()() [D:\Unreal Projects\Lipsync\fix2\MyProject\Plugins\OVRLipSync\Source\OVRLipSync\Private\CreateFrameSequenceAsset.cpp:79]
MyProject_Win64_Shipping!TAsyncRunnable<void>::Run()
MyProject_Win64_Shipping!FRunnableThreadWin::Run()
在CreateFrameSequenceAsset.cpp:79
上跟踪错误,这是插件源代码的一部分,我找到了以下函数context.ProcessFrame(PCMData + offs, ChunkSizeSamples, Visemes, LaughterScore, FrameDelayInMs,NumChannels > 1);
把精力放回到函数的声明和定义上,没有发现任何有用的东西,除了我尝试查找文件ovrlipsyncshim.cpp
,没有发现任何东西,所以我尝试搜索我的项目以寻找ProcessFrameEx()
,我在/ThirdParty/Include/OVRLipSync.h
中找到了它的另一个部分,如下所示
ovrLipSyncResult ovrLipSync_ProcessFrameEx(
ovrLipSyncContext context,
const void* audioBuffer,
int sampleCount,
ovrLipSyncAudioDataType dataType,
ovrLipSyncFrame* pFrame);
尽管对所有这些都进行了跟踪,但仍然找不到任何有用的东西来处理异常或告诉异常的原因。
任何人都曾面临过这样的问题,或有过解决这类问题的经验。
发布于 2022-08-24 10:19:06
我也有过同样的问题。我在OvrLipSyncEditorModule.cpp中换了一行
来自
UOVRLipSyncContextWrapper context(ovrLipSyncContextProvider_Enhanced, SampleRate, 4096, ModelPath);
到
UOVRLipSyncContextWrapper context(ovrLipSyncContextProvider_Enhanced, SampleRate, 8192, ModelPath);
(基本上我增加了缓冲区的大小)
我还增加了这一行:
SoundWave->LoadingBehavior = ESoundWaveLoadingBehavior::ForceInline;
调用之前的
DecompressSoundWave(SoundWave);
现在它不再崩溃,它生成一个序列,但是当我将序列附加到模型上时,它什么也不做。这很奇怪,它似乎不是一个工作的序列,即使我已经检查了,并且序列不是空的。
https://stackoverflow.com/questions/73015071
复制相似问题