为什么应用画面没有全屏展示?
一般设备常见有两种方式的全屏
- 屏幕全屏
在设备屏幕范围内全屏,没有浏览器的导航栏等界面,可以通过 发布应用时开启全屏实现 ,也可通过 SDK toggleFullscreen开启 。
- 网页全屏
界面元素占满浏览器 viewport 范围,全屏后仍可以看到浏览器的地址栏等界面。不同设备对全屏 API 的支持情况不同,若设备已至此全屏API仍然没有将应用画面铺满屏幕,您的应用可能遇到以下情况:
应用画面有黑边
- 修改显示模式:云渲染默认云实例桌面分辨率为1920*1080p,若您的应用画面存在黑边,是由于应用窗口与终端显示屏 宽高比不同 ,您可以通过在应用发布时设置画面显示模式改为拉伸、裁剪达到无黑边全屏展示。SDK接入时也可通过landscapeType修改显示模式。
- 设置运行窗口为全屏模式: 通过设置应用运行窗口Fullscreen Mode为Windowed Fullscreen ,可将应用分辨率按桌面分辨率显示。
应用画面被裁剪
- 网页端默认实现了裁剪功能(相对中心裁剪)以保证应用无黑边全屏显示, 如果你要使用裁剪功能, 你应该确保你的应用预留了裁剪空间, 例如, 你的应用在被裁剪边没有紧贴边缘的UI, 否则UI也会一并被裁剪. 保证裁剪余量可以通过UMG的锚点定位轻松实现。
应用画面被压缩
- 窗口大小超出了桌面大小,云实例桌面分辨率为1080p,若您的应用超过此大小则会出现画面被压缩情况,请联系后台人员帮助您修改云实例分辨率。
注意1.iOS系统限制,不支持网页端开启全屏、画面拉伸模式。
2.修改云实例桌面分辨率功能仅对包周期客户开放。
我需要自定义应用画面分辨率
平台抓流方式
应用运行后, 平台会以应用窗口的分辨率抓取视频流并传输至前端, 若运行过程中应用分辨率被中途修改, 视频流分辨率也会随之发生改变.
自定义分辨率
由于推流分辨率依赖于应用分辨率, 因此, 只需更改应用分辨率即可
在UE4中, 对于C++用户:UKismetSystemLibrary::ExecuteConsoleCommand(this, "r.setRes 1920x1080w", 0);
但自定义分辨率会受限于机器分辨率, 例如对于2k机器, 其所允许的最大分辨率为1920x1080, 若超过此值, 则分辨率命令将会失效。
你可以利用此功能让应用变成竖屏应用, 也可以适当增加应用分辨率以提升画面清晰度, 也可以适当降低分辨率以节省带宽和降低网络需求。
动态分辨率
有些时候, 在设置固定应用分辨率并不能满足业务场景时, 例如, 客户希望应用动态适配前端设备的屏幕百分比而不必进行画面裁剪(UMG系统内置了一套纵横比自适应系统).我们可以基于此前建立的网页端与应用端的网络通信实现动态分辨率。
- 在网页端, 你可以发送一则消息:ConsoleCommand:r.setRes 1920x1080w,随后在UE中解析此json并进行拼接即可
- 对于C++而言, 可以监听RayvisionSocket组件的OnMessage方法, 随后进行解析:
{<br/>
if(Message.StartsWith("ConsoleCommand"))<br/>
{<br/>
const FString ResCommand = Message.RightChop(Message.Find(":")+1);<br/>
}<br/>
}
- 当需要修改分辨率时, 只需要调用前端对应的emit接口即可。