NIMNetCallOption.h 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. //
  2. // NIMNetCallOption.h
  3. // NIMLib
  4. //
  5. // Created by Netease.
  6. // Copyright © 2016年 Netease. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import <CoreMedia/CMSampleBuffer.h>
  10. #import "NIMAVChatDefs.h"
  11. @class NIMNetCallVideoCaptureParam;
  12. @class NIMNetCallCustomVideoParam;
  13. NS_ASSUME_NONNULL_BEGIN
  14. /**
  15. * 语音数据处理Block
  16. *
  17. * @param audioSamples 麦克风采集到的语音原始 PCM 采样数据,处理完的数据通过该字段回填
  18. * @param samplesNumber 采样数据点数量
  19. * @param sampleRate 采样率
  20. *
  21. * @return 回填数据采样点数,不允许超过samplesNumber
  22. */
  23. typedef NSUInteger(^NIMNetCallAudioSamplesHandler)(SInt16 *audioSamples, NSUInteger samplesNumber, Float64 sampleRate);
  24. /**
  25. * 网络通话选项
  26. */
  27. @interface NIMNetCallOption : NSObject
  28. /**
  29. * 视频采集参数, 指定该参数以在加入网络通话时自动设置视频采集, 如果不指定该参数, 需要开发者调用 startVideoCapture: 手动开启视频采集。如果在加入网络通话前已经开启了视频采集, 该参数无效,该参数与 customVideoParam 不能同时设置
  30. */
  31. @property (nullable, nonatomic, strong) NIMNetCallVideoCaptureParam *videoCaptureParam;
  32. /**
  33. * 自定义输入视频参数,该参数与 videoCaptureParam 不能同时设置
  34. */
  35. @property (nullable, nonatomic, strong) NIMNetCallCustomVideoParam *customVideoParam;
  36. /**
  37. * 结束网络通话时自动停止视频采集, 默认为 YES。如果需要在离开会话以后摄像头保持开启,将该选项设置为 NO
  38. */
  39. @property (nonatomic, assign) BOOL stopVideoCaptureOnLeave;
  40. /**
  41. * 自动旋转远端画面, 默认为 YES
  42. * @discussion 开启该选项, 以在远端设备旋转时在本端自动调整角度
  43. */
  44. @property (nonatomic, assign) BOOL autoRotateRemoteVideo;
  45. /**
  46. * 期望的视频编码器. 硬件编码设置仅在 iOS 8.0 及以上系统有效
  47. */
  48. @property (nonatomic,assign) NIMNetCallVideoCodec preferredVideoEncoder;
  49. /**
  50. * 期望的视频解码器. 硬件解码设置仅在 iOS 8.0 及以上系统有效
  51. */
  52. @property (nonatomic,assign) NIMNetCallVideoCodec preferredVideoDecoder;
  53. /**
  54. * 视频最大编码码率 (bps). 如果不指定, SDK 会根据视频质量自动选择
  55. */
  56. @property (nonatomic, assign) NSUInteger videoMaxEncodeBitrate;
  57. /**
  58. * 纯视频模式, 将不启动所有音频相关的模块, 默认为 NO
  59. */
  60. @property (nonatomic, assign) BOOL pureVideo;
  61. /**
  62. * 结束网络通话时自动停止AudioSession, 默认为 YES
  63. */
  64. @property (nonatomic, assign) BOOL autoDeactivateAudioSession;
  65. /**
  66. * 语音降噪, 默认为 YES
  67. */
  68. @property (nonatomic, assign) BOOL audioDenoise;
  69. /**
  70. * 人声检测, 默认为 YES
  71. */
  72. @property (nonatomic, assign) BOOL voiceDetect;
  73. /**
  74. * 回声抑制
  75. */
  76. @property (nonatomic, assign) NIMAVChatAcousticEchoCanceler acousticEchoCanceler;
  77. /**
  78. * 啸叫抑制, 默认为 NO
  79. */
  80. @property (nonatomic, assign) BOOL audioHowlingSuppress;
  81. /**
  82. 期望发送高清语音, 只有在通话的所有的参与者都设置为高清语音时才完全生效。3.3.0 之前的版本无法加入已经开启高清语音的多人会议。开启该选项后蓝牙耳机将不能使用
  83. */
  84. @property (nonatomic, assign) BOOL preferHDAudio;
  85. /**
  86. * 自动重置音频设备, 默认为NO 当检查音频采集数据不正常时,自动重置音频设备
  87. */
  88. @property (nonatomic, assign) BOOL autoResetAudio;
  89. /**
  90. * 场景设置
  91. */
  92. @property (nonatomic, assign) NIMAVChatScene scene;
  93. /**
  94. * 视频调控策略 默认为 清晰优先
  95. */
  96. @property (nonatomic, assign) NIMAVChatVideoAdaptiveStrategy videoAdaptiveStrategy;
  97. /**
  98. * 本地采集的语音数据回调,供上层实现变音等功能
  99. */
  100. @property (nullable, nonatomic, copy) NIMNetCallAudioSamplesHandler audioHandler;
  101. /**
  102. * 启用互动直播,只在加入会议时设置有效
  103. */
  104. @property (nonatomic, assign) BOOL enableBypassStreaming;
  105. /**
  106. * 互动直播推流地址。只在加入会议时设置有效,只有主播端可以指定,每个频道只能有一个主播。
  107. *
  108. * @discussion 指定推流地址的客户端被认为是互动直播的主播端
  109. */
  110. @property (nullable,nonatomic, strong) NSString *bypassStreamingUrl;
  111. /**
  112. * 互动直播音视频混屏模式,在 NIMNetCallBypassStreamingMixMode 里面选择合适的模式,只有主播设置有效
  113. */
  114. @property (nonatomic, assign) NSUInteger bypassStreamingMixMode;
  115. /**
  116. * 互动直播音视频混屏自定义布局配置,在 bypassStreamingMixMode 为 NIMNetCallBypassStreamingMixModeCustomVideoLayout 或 NIMNetCallBypassStreamingMixModeCustomAudioLayout 时必须设置
  117. */
  118. @property (nonatomic, copy) NSString *bypassStreamingMixCustomLayoutConfig;
  119. /**
  120. 互动直播服务器录制,只有主播设置生效(互动直播服务器录制功能需要开通才能使用)
  121. */
  122. @property (nonatomic, assign) BOOL bypassStreamingServerRecording;
  123. /**
  124. * 服务器录制音频开关 (该开关仅在服务器开启录制功能时才有效)
  125. */
  126. @property (nonatomic, assign) BOOL serverRecordAudio;
  127. /**
  128. * 服务器录制视频开关 (该开关仅在服务器开启录制功能时才有效)
  129. */
  130. @property (nonatomic, assign) BOOL serverRecordVideo;
  131. /**
  132. * 扩展消息
  133. * @discussion 仅在主叫发起点对点通话时设置有效,用于在主被叫之间传递额外信息,被叫收到呼叫时会携带该信息
  134. */
  135. @property (nullable,nonatomic,copy) NSString *extendMessage;
  136. /**
  137. * 始终持续呼叫
  138. * @discussion 仅在主叫发起点对点通话时设置有效,用于设置被叫离线时是否仍然需要持续呼叫, 默认为 YES
  139. */
  140. @property (nonatomic, assign) BOOL alwaysKeepCalling;
  141. /**
  142. * 网络通话请求是否附带推送
  143. * @discussion 仅在主叫发起点对点通话时设置有效,默认为YES。将这个字段设为NO,网络通话请求将不再有苹果推送通知。
  144. */
  145. @property (nonatomic,assign) BOOL apnsInuse;
  146. /**
  147. * 推送是否需要角标计数
  148. * @discussion 仅在主叫发起点对点通话时设置有效,默认为YES。将这个字段设为NO,网络通话请求将不再对角标计数。
  149. */
  150. @property (nonatomic,assign) BOOL apnsBadge;
  151. /**
  152. * 推送是否需要带前缀(一般为昵称)
  153. * @discussion 仅在主叫发起点对点通话时设置有效,默认为YES。将这个字段设为NO,推送消息将不带有前缀(xx:)。
  154. */
  155. @property (nonatomic,assign) BOOL apnsWithPrefix;
  156. /**
  157. * apns推送文案
  158. * @discussion 仅在主叫发起点对点通话时设置有效,默认为nil,用户可以设置当前通知的推送文案
  159. */
  160. @property (nullable,nonatomic,copy) NSString *apnsContent;
  161. /**
  162. * apns推送声音文件
  163. * @discussion 仅在主叫发起点对点通话时设置有效,默认为nil,用户可以设置当前通知的推送声音。该设置会覆盖apnsPayload中的sound设置
  164. */
  165. @property (nullable,nonatomic,copy) NSString *apnsSound;
  166. /**
  167. * apns推送Payload
  168. * @discussion 仅在主叫发起点对点通话时设置有效,可以通过这个字段定义自定义通知的推送Payload,支持字段参考苹果技术文档,最多支持2K
  169. */
  170. @property (nullable,nonatomic,copy) NSDictionary *apnsPayload;
  171. @end
  172. NS_ASSUME_NONNULL_END