在项目开发中遇到这样一个问题,网页端传给UE的H264格式视频,在网页端是正常播放的,但是在UE端无法正常播放,甚至出现游览器版本不支持的现象。在查阅资料后发现是由于UE自带的WebBrowser使用的CEF内核过低,并且不支持H264格式的视频播放导致。
首先要了解什么是CEF,Chromium Embedded Framework,简称CEF: 这是一个开源项目,基于Google Chromium项目,提供Web browser控件,支持Windows、Linux、Mac平台。CEF专注于促进第三方应用程序中的嵌入式浏览器用例,通过提供生产质量的稳定API和跟踪特定Chromium版本的发布分支,使用户免受底层Chromium和Blink代码复杂性的影响。CEF的许多功能具有默认实现,使得用户只需很少或不需要集成工作即可使用。
如何解决?在我经过搜索发现H264编码需要证书授权,因此在UE5中存在无法播放该格式的视频问题。因此我们只需要重新编译CEF3使其支持H264编码再将其替换到UE中即可,请注意:如果直接替换到UE编辑器当中请保障CEF版本的一致性,否则可能会导致编辑器开启崩溃。
在修复H264编码格式过后,H264的视频可以正常播放了,在后续开发中发现前端传到UE的界面样式与实际有差异,此时联想到是否是因为内核过低导致一些Web端的新组件无法正常支持,于是我开始升级内核。
升级内核其实跟解决H264编码问题的方式是一致的,下载新版本的CEF内核,将其重新编译即可,唯一不同的点是,升级内核不能直接替换到编辑器中,原因也很简单,版本不一致,会有一些API更新。
在此期间: B站肥人老师
以及吉叶子老师
的视频给予了我极大帮助
在编译完内核后,我们需要将其以插件的形式对其进行升级,在这期间需要用到UE5源码,在编译源码的过程中也遇到了一个雷点,由于使用的CPU是大小核构架,在编译过程中我的小核跑慢,大核几乎没动,导致我的编译进度巨慢(编译了八个小时连三分之一都不到),解决这个问题要么升级Win11系统要么把CPU小核禁用掉,W11的Bug过多,果断选择禁用小核心,在禁用小核心后仅仅使用了一个小时就编译完了整个UE源码。编译完源码后,将CEF、WebBorwser、CefUtil源码进行复制挪出来将其中所有的类和部分方法名进行修改,做成插件即可完成内核升级。
目前已经对5.1-5.3的WebBrowser内核进行升级,并对WebUI插件的内核也进行修改,经过测试可以正常打包,目前已放到项目中使用,免费提供5.1-5.3WebBrowser内核升级版