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