Real Time Messaging Protocol(RTMP)即实时消息传输协议,是 Adobe 公司开发的一个基于 TCP 的应用层协议,目前国内的视频云服务都是以 RTMP 为主要推流协议。
什么是EasyRTMP?
EasyRTMP是结合了多种音视频缓存及网络技术的一个rtmp直播推流端,包括:圆形缓冲区(circular buffer)、智能丢帧、自动重连、rtmp协议等等多种技术,能够非常有效地适应各种平台(Windows、Linux、ARM、Android、iOS),各种网络环境(有线、wifi、4G),以及各种情况下的直播恢复(服务器重启、网络重启、硬件设备重启)。
EasyRTMP-iOS在iPhoneX及其以后的机型中,出现头部被遮挡的问题,如何解决?
在iPhoneX及其以后的机型中,因为全面屏手机,都有刘海这样的设计,所以要特别计算下状态栏的高度,再来适应屏幕的布局。
根据机型判断出状态栏的高度EasyBarHeight,和底部导航栏的高度EasyTabBarHeight:
//判断iPhoneX
#define IS_IPHONE_X ([UIScreen instancesRespondToSelector:
@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436),
[[UIScreen mainScreen] currentMode].size) && !isIPad : NO)
//判断iPHoneXr
#define IS_IPHONE_Xr ([UIScreen instancesRespondToSelector:
@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(828, 1792),
[[UIScreen mainScreen] currentMode].size) && !isIPad : NO)
//判断iPhoneXs
#define IS_IPHONE_Xs ([UIScreen instancesRespondToSelector:
@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436),
[[UIScreen mainScreen] currentMode].size) && !isIPad : NO)
//判断iPhoneXs Max
#define IS_IPHONE_Xs_Max ([UIScreen instancesRespondToSelector:
@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2688),
[[UIScreen mainScreen] currentMode].size) && !isIPad : NO)
//navBar和tabBar的判断
#define EasyBarHeight ((IS_IPHONE_X==YES || IS_IPHONE_Xr ==YES ||
IS_IPHONE_Xs== YES || IS_IPHONE_Xs_Max== YES) ? 44.0 : 20.0)
#define EasyNavHeight 44
#define EasyTabBarHeight ((IS_IPHONE_X==YES || IS_IPHONE_Xr ==YES ||
IS_IPHONE_Xs== YES || IS_IPHONE_Xs_Max== YES) ? 83.0 : 49.0)