手机摄像头推流互联网网页无插件直播iPhoneX及以上型号手机使用EasyRTMP- iOS如何解决头部被遮挡的问题

Real Time Messaging Protocol(RTMP)即实时消息传输协议,是 Adobe 公司开发的一个基于 TCP 的应用层协议,目前国内的视频云服务都是以 RTMP 为主要推流协议。

什么是EasyRTMP?

EasyRTMP是结合了多种音视频缓存及网络技术的一个rtmp直播推流端,包括:圆形缓冲区(circular buffer)、智能丢帧、自动重连、rtmp协议等等多种技术,能够非常有效地适应各种平台(Windows、Linux、ARM、Android、iOS),各种网络环境(有线、wifi、4G),以及各种情况下的直播恢复(服务器重启、网络重启、硬件设备重启)。

EasyRTMP工作流程.png

提出问题

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)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值