BGKSYLiveController.h 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. //
  2. // BGKSYLiveController.h
  3. // FanweApp
  4. //
  5. // Created by xfg on 2017/2/10.
  6. // Copyright © 2017年 xfg. All rights reserved.
  7. // 金山云直播,只处理与SDK有关的业务
  8. #import "STSuspensionWindow.h"
  9. #import "BGSettingBeautyView.h"
  10. //#import <libksyrtclivedy/KSYRTCClient.h>
  11. /**
  12. * =========================================================================================================
  13. *
  14. * 操作前请详细阅读该说明
  15. *
  16. * 该类只处理与SDK有关的业务,如有接入其他SDK时可参考该类;
  17. * 必须做的操作:1、重写父方法 2、实现FWLiveControllerAble协议
  18. *
  19. * 说明:该类主要编写的是金山的推拉流等操作,其中连麦集成了:1、金山连麦 ;2、声网连麦。 注意:该类并没有声网直播,只是用了声网的连麦!
  20. *
  21. * 操作须知:由于集成了金山连麦和声网两种连麦方式,而他们各自的SDK推流类并不相同,加上逻辑有些差异,因此当前分了两套推拉流类
  22. *
  23. * BGKSYLinkMicStreamerController : 主播控制类(金山连麦)
  24. * BGKSYLinkMicPlayerController : 观众控制类(金山连麦)
  25. *
  26. * BGKSYAgoraLinkMicStreamerController : 主播控制类(声网连麦)
  27. * BGKSYAgoraLinkMicPlayerController : 观众控制类(声网连麦)
  28. *
  29. * BGKSYPlayerController : 金山云点播(回放、回播)控制类
  30. *
  31. * 注意:不同直播SDK可能存在冲突,比如腾讯云直播SDK和金山直播SDK就存在冲突,所以金山SDK用的是动态库
  32. *
  33. * =========================================================================================================
  34. */
  35. typedef struct _StreamState
  36. {
  37. double timeSecond; // 更新时间
  38. int uploadKByte; // 上传的字节数(KB)
  39. int encodedFrames; // 编码的视频帧数
  40. int droppedVFrames; // 丢弃的视频帧数
  41. } StreamState;
  42. @interface BGKSYLiveController : BGLiveBaseController<FWLiveControllerAble,FWLiveServiceControllerDelegate,ToolsViewDelegate,TCShowLiveTopViewToSDKDelegate,FWKSYPlayerControllerDelegate,livePayDelegate,FWKSYLinkMicStreamerControllerDelegate,FWKSYLinkMicPlayerControllerDelegate,STSuspensionWindowDelegate,TCShowLiveViewForSDKDelegate,FWKSYAgoraStreamerBaseControllerDelegate,FWKSYStreamerControllerDelegate,FWTPlayControllerDelegate,TXLivePlayListener>
  43. {
  44. @private
  45. NSInteger _mikeCount; // 连麦数
  46. NSInteger _micMaxNum; // 连麦最大数量
  47. MMAlertView *_applyMickingAlert; // 观众申请连麦中的弹窗
  48. MMAlertView *_hostMickingAlert; // 主播收到观众申请连麦中的弹窗
  49. StreamState _lastStD; // 上一次更新时的数据, 假定每秒更新一次
  50. StreamState _curState;
  51. StreamState _deltaS;
  52. BGSettingBeautyView *_beautyView; // 美颜视图
  53. ToolsView *_toolsView;
  54. BOOL _isMuted; // 当前是否静音状态
  55. }
  56. // 金山云点播(回放、回播)控制类
  57. @property (nonatomic, strong) BGKSYPlayerController *ksyPlayerController;
  58. // 主播控制类(金山连麦)
  59. @property (nonatomic, strong) BGKSYLinkMicStreamerController *ksyLinkMicStreamerController;
  60. // 观众控制类(金山连麦)
  61. @property (nonatomic, strong) BGKSYLinkMicPlayerController *ksyLinkMicPlayerController;
  62. // 主播控制类(声网连麦)
  63. @property (nonatomic, strong) BGKSYAgoraLinkMicStreamerController *agoraLinkMicStreamerController;
  64. // 观众控制类(声网连麦)
  65. @property (nonatomic, strong) BGKSYAgoraLinkMicPlayerController *agoraLinkMicPlayerController;
  66. // 点播进度条容器视图
  67. @property (nonatomic, strong) BGReLiveProgressView *reLiveProgressView;
  68. // 直播业务层
  69. @property (nonatomic, strong) BGLiveServiceController *liveServiceController;
  70. // 连麦观众
  71. @property (nonatomic, strong) NSMutableArray *mickUserMArray;
  72. // 金山云连麦鉴权观众列表(鉴权后不一定能真正连麦成功,所以做此记录)
  73. @property (nonatomic, strong) NSMutableArray *registerMickUserMArray;
  74. // 当前连麦接收者的ID(一般指的是主播)
  75. @property (nonatomic, strong) CustomMessageModel *customResponderModel;
  76. // 当前连麦接申请者的ID(一般指的是连麦观众)
  77. @property (nonatomic, strong) CustomMessageModel *customApplicantModel;
  78. // 是否连麦申请中
  79. @property (nonatomic, assign) BOOL isApplyMicking;
  80. // 返回竖屏按钮
  81. @property (nonatomic, strong) UIButton *backVerticalBtn;
  82. // 开始推流、拉流
  83. - (void)startLiveRtmp:(NSString *)playUrlStr;
  84. // 结束推流、拉流
  85. - (void)stopLiveRtmp;
  86. // 获取当前直播质量
  87. - (NSString *)getLiveQuality;
  88. // yue 创建直播间
  89. + (UIViewController *)showLiveViewCwith:(TCShowLiveListItem *)liveListItem;
  90. // 获取当前视频容器视图的父视图
  91. - (UIView *)getPlayViewBottomView;
  92. // 设置静音
  93. - (void)setSDKMute:(BOOL)bEnable;
  94. @end