| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- //
- // 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;
- 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;
- /**
- * 啸叫抑制, 默认为 NO
- */
- @property (nonatomic, assign) BOOL audioHowlingSuppress;
- /**
- 期望发送高清语音, 只有在通话的所有的参与者都设置为高清语音时才完全生效。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;
- /**
- * 服务器录制音频开关 (该开关仅在服务器开启录制功能时才有效)
- */
- @property (nonatomic, assign) BOOL serverRecordAudio;
- /**
- * 服务器录制视频开关 (该开关仅在服务器开启录制功能时才有效)
- */
- @property (nonatomic, assign) BOOL serverRecordVideo;
- /**
- * 扩展消息
- * @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;
- @end
- NS_ASSUME_NONNULL_END
|