最近接手的项目需要把项目从UE4中迁移至UE5.0,其中遇到了一个mp4视频无法播放的bug,这里做一下记录。

在官方论中有提到过这个bug,https://forums.unrealengine.com/t/media-textures-wont-display-video-in-ue5-preview-1-while-using-directx-12/503980/2

按照常规的方法播放视频在MediaPlay的Play节点会返回false,并在会会在日志中打印:

LogWmfMedia:Error:Tracks 000084F14025C90:Format is not supported in D3D12

意思是在最新的DX12图形库下UE5默认使用的WMF解码器目前不支持mp4的视频解码。

解决方案有两个,其一更换图形库,其二更换解码器。

更换图形库

WMF解码器只是在DX12下会有解码出错的bug,在DX11或者Vulkan下没有这个bug,所以我们可以把UE使用的图形库换成DX11或者Vulkan。

在Edit/ProjectSettings/Platforms/Windows/Targeted RHIs/Default RHI中切换图形库,UE5支持DX11,DX12和Vulkan。

但是由于我的项目中使用了Groom毛发系统,Groom在DX11和Vulkan中支持的不是很好,所以方案一只能pass掉了。

更换解码器

WMF是UE默认使用的视频解码器,除此之外UE在插件里还集成了一个功能更强大的视频解码器—Electra Play。

启用插件,重启后我们就可以在MediaPlay试图中的PlaybackOptions下看到ElectraPlay解码器,只需要将MediaPlay切换到ElectraPlay解码器即可,当然每一个MediaPlay都要进行切换解码器操作。

然每一个MediaPlay都要进行切换解码器操作。

运行时播放视频黑屏

当我把以上的配置都设置好后,并且也在蓝图中配置好MediaPlay和OpenSource,然后在运行播放,发现视频黑屏,只有在打开媒体播放器播放视频时,视频才能播放。

具体时什么原因导致的我没有找到原因,但是我找到了一个快捷的解决办法,一般用于媒体播放的材质我们是这么连的:

把贴图连在BaseColor上就会出现播放视频运行时黑屏,解决方法是将贴图连到自发光,问题就解决了,并且把贴图连到自发光可以保证在场景中播放的视频亮度与原视频一致。

运行时黑屏这个问题我只在5.0中有遇到,其他版本的引擎并没有碰到这个问题。

好文推荐

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。