| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998 |
- //
- // NIMNetCallManagerProtocol.h
- // NIMLib
- //
- // Created by Netease.
- // Copyright (c) 2015 Netease. All rights reserved.
- //
- #import <CoreMedia/CMSampleBuffer.h>
- #import <NIMSDK/NIMPlatform.h>
- #import "NIMAVChatDefs.h"
- NS_ASSUME_NONNULL_BEGIN
- @class NIMNetCallOption;
- @class NIMNetCallMeeting;
- @class NIMNetCallRecordingInfo;
- @class NIMNetCallUserInfo;
- @class NIMNetCallAudioFileMixTask;
- @class NIMNetCallVideoCaptureParam;
- /**
- * 发起通话Block
- *
- * @param error 发起通话结果, 如果成功error为nil
- * @param callID 发起通话的call id, 如果发起失败则为0
- */
- typedef void(^NIMNetCallStartHandler)(NSError * __nullable error, UInt64 callID);
- /**
- * 响应通话请求Block
- *
- * @param error 响应通话请求结果, 如果成功error为nil
- * @param callID 响应通话的call id
- */
- typedef void(^NIMNetCallResponseHandler)(NSError * __nullable error, UInt64 callID);
- /**
- * 预订或者加入多人会议请求Handler
- *
- * @param meeting 预订或者加入的多人会议
- * @param error 预订或者加入多人会议请求结果, 如果成功 error 为 nil
- */
- typedef void(^NIMNetCallMeetingHandler)(NIMNetCallMeeting *meeting, NSError * __nullable error);
- /**
- * 网络通话状态
- */
- typedef NS_ENUM(NSInteger, NIMNetCallStatus){
- /**
- * 已连接
- */
- NIMNetCallStatusConnect,
- /**
- * 已断开
- */
- NIMNetCallStatusDisconnect,
- };
- /**
- * 网络通话控制类型
- */
- typedef NS_ENUM(NSInteger, NIMNetCallControlType){
- /**
- * 开启了音频
- */
- NIMNetCallControlTypeOpenAudio = 1,
- /**
- * 关闭了音频
- */
- NIMNetCallControlTypeCloseAudio = 2,
- /**
- * 开启了视频
- */
- NIMNetCallControlTypeOpenVideo = 3,
- /**
- * 关闭了视频
- */
- NIMNetCallControlTypeCloseVideo = 4,
- /**
- * 切换到视频模式
- */
- NIMNetCallControlTypeToVideo = 5,
- /**
- * 同意切换到视频模式,用于切到视频模式需要对方同意的场景
- */
- NIMNetCallControlTypeAgreeToVideo = 6,
- /**
- * 拒绝切换到视频模式,用于切到视频模式需要对方同意的场景
- */
- NIMNetCallControlTypeRejectToVideo = 7,
- /**
- * 切换到音频模式
- */
- NIMNetCallControlTypeToAudio = 8,
- /**
- * 占线
- */
- NIMNetCallControlTypeBusyLine = 9,
- /**
- * 没有可用摄像头
- */
- NIMNetCallControlTypeNoCamera = 10,
- /**
- * 应用切换到了后台
- */
- NIMNetCallControlTypeBackground = 11,
- /**
- * 收到呼叫请求的反馈,通常用于被叫告诉主叫可以播放回铃音了
- */
- NIMNetCallControlTypeFeedabck = 12,
-
- /**
- * 开始录制
- */
- NIMNetCallControlTypeStartRecord = 13,
-
- /**
- * 结束录制
- */
- NIMNetCallControlTypeStopRecord = 14,
- };
- /**
- * 视频通话使用的摄像头
- */
- typedef NS_ENUM(NSInteger, NIMNetCallCamera){
- /**
- * 前置摄像头
- */
- NIMNetCallCameraFront,
- /**
- * 后置摄像头
- */
- NIMNetCallCameraBack,
- };
- /**
- * 音视频聊天相关回调
- */
- @protocol NIMNetCallManagerDelegate <NSObject>
- @optional
- /**
- * 被叫收到呼叫(振铃)
- *
- * @param callID call id
- * @param caller 主叫帐号
- * @param type 呼叫类型
- * @param extendMessage 扩展消息, 透传主叫发起通话时携带的该信息
- */
- - (void)onReceive:(UInt64)callID
- from:(NSString *)caller
- type:(NIMNetCallMediaType)type
- message:(nullable NSString *)extendMessage;
- /**
- * 主叫收到被叫响应
- *
- * @param callID call id
- * @param callee 被叫帐号
- * @param accepted 是否接听
- */
- - (void)onResponse:(UInt64)callID
- from:(NSString *)callee
- accepted:(BOOL)accepted;
- /**
- * 对方挂断电话
- *
- * @param callID call id
- * @param user 对方帐号
- */
- - (void)onHangup:(UInt64)callID
- by:(NSString *)user;
- /**
- * 这通呼入通话已经被该帐号其他端处理
- *
- * @param callID 呼入通话的call id
- * @param accepted 是否被接听
- */
- - (void)onResponsedByOther:(UInt64)callID
- accepted:(BOOL)accepted;
- /**
- 点对点通话建立成功
- @param callID call id
- */
- - (void)onCallEstablished:(UInt64)callID;
- /**
- 通话异常断开
- @param callID call id
- @param error 断开的原因,如果是 nil 表示正常退出
- */
- - (void)onCallDisconnected:(UInt64)callID
- withError:(nullable NSError *)error;
- /**
- * 收到对方网络通话控制信息,用于方便通话双方沟通信息
- *
- * @param callID 相关网络通话的call id
- * @param user 对方帐号
- * @param control 控制类型
- */
- - (void)onControl:(UInt64)callID
- from:(NSString *)user
- type:(NIMNetCallControlType)control;
- /**
- * 当前通话网络状态
- *
- * @param status 网络状态
- * @param user 网络状态对应的用户;如果是自己,表示自己的发送网络状态
- */
- - (void)onNetStatus:(NIMNetCallNetStatus)status
- user:(NSString *)user;
- /**
- * 本地摄像头预览就绪
- *
- * @param displayView 本地摄像头预览层
- */
- - (void)onLocalDisplayviewReady:(UIView *)displayView;
- /**
- * 本地视频采集方向切换完成回调
- *
- * @param orientation 采集方向
- */
- -(void)onCameraOrientationSwitchCompleted:(NIMVideoOrientation)orientation;
- /**
- * 摄像头方向切换完成回调
- *
- * @param cameraType 摄像头方向
- */
- -(void)onCameraTypeSwitchCompleted:(NIMNetCallCamera)cameraType;
- /**
- * 视频清晰度切换完成回调
- *
- * @param videoQuality 清晰度
- */
- -(void)onCameraQualitySwitchCompleted:(NIMNetCallVideoQuality)videoQuality;
- /**
- * 远程视频YUV数据就绪
- *
- * @param yuvData 远程视频YUV数据, 紧凑型 (stride 等于 width)
- * @param width 远程视频画面宽度
- * @param height 远程视频画面长度
- * @param user 远程视频画面属于的用户
- *
- * @discussion 将YUV数据直接渲染在OpenGL上比UIImageView贴图占用更少的cpu
- */
- - (void)onRemoteYUVReady:(NSData *)yuvData
- width:(NSUInteger)width
- height:(NSUInteger)height
- from:(NSString *)user API_UNAVAILABLE(macos);;
- /**
- * 远程视频 SampleBuffer 数据就绪
- *
- * @param sampleBuffer 远程视频 SampleBuffer 数据
- * @param user 远程视频画面属于的用户
- *
- */
- - (void)onRemoteVideo:(CMSampleBufferRef)sampleBuffer
- from:(NSString *)user API_UNAVAILABLE(ios);;
- /**
- * 远程视频画面就绪
- *
- * @param image 远程视频画面
- *
- * @discussion 如果你已经使用onRemoteYUVReady:width:height:得到的YUV数据渲染画面, 不要实现该委托以优化性能
- */
- - (void)onRemoteImageReady:(CGImageRef)image;
- /**
- * 录制成功开始
- *
- * @param callID 录制的相关网络通话的call id
- * @param fileURL 录制的文件路径
- * @param userId 录制用户对象的id
- */
- - (void)onRecordStarted:(UInt64)callID
- fileURL:(NSURL *)fileURL
- uid:(NSString *)userId;
- /**
- * 录制发生了错误
- *
- * @param error 错误
- * @param callID 录制错误相关网络通话的call id
- * @param userId 录制用户对象的id
- */
- - (void)onRecordError:(NSError *)error
- callID:(UInt64)callID
- uid:(NSString *)userId;
- /**
- * 录制成功结束
- *
- * @param callID 录制的相关网络通话的call id
- * @param fileURL 录制的文件路径
- * @param userId 录制用户对象的id
- */
- - (void)onRecordStopped:(UInt64)callID
- fileURL:(NSURL *)fileURL
- uid:(NSString *)userId;
- /**
- * 网络通话服务器录制信息
- *
- * @param info 录制信息
- */
- - (void)onNetCallRecordingInfo:(NIMNetCallRecordingInfo *)info;
- /**
- * 用户加入了多人会议
- *
- * @param uid 用户 id
- * @param meeting 用户加入的会议
- */
- - (void)onUserJoined:(NSString *)uid
- meeting:(NIMNetCallMeeting *)meeting;
- /**
- * 用户离开了多人会议
- *
- * @param uid 用户 id
- * @param meeting 用户离开的会议
- */
- - (void)onUserLeft:(NSString *)uid
- meeting:(NIMNetCallMeeting *)meeting;
- /**
- * 会议发生了错误
- *
- * @param error 错误信息
- * @param meeting 发生错误的会议
- */
- - (void)onMeetingError:(NSError *)error
- meeting:(NIMNetCallMeeting *)meeting;
- /**
- * 自己当前音量
- *
- * @param volume 音量
- */
- -(void)onMyVolumeUpdate:(UInt16)volume;
- /**
- * 正在说话的用户信息汇报
- *
- * @param report 用户信息,包含音量,如果为空,表示没有说话的人
- */
- - (void)onSpeakingUsersReport:(nullable NSArray<NIMNetCallUserInfo *> *)report;
- /**
- 当前语音文件混音任务完成回调
- */
- - (void)onAudioMixTaskCompleted;
- /**
- 当前音效播放完成回调
- */
- - (void)onSoundEffectPlayCompleted;
- /**
- 互动直播状态回调
-
- @param code 互动直播状态码
- */
- - (void)onBypassStreamingStatus:(NIMBypassStreamingStatus)code;
- /**
- * 摄像头开关状态回调
- *
- * @param running 开启状态
- */
- - (void)onCameraRunning:(BOOL)running;
- @end
- /**
- * 网络通话协议
- */
- @protocol NIMNetCallManager <NSObject>
- /**
- * 主叫发起通话 - 新接口
- *
- * @param callees 被叫帐号列表, 现在只支持传入一个被叫
- * @param type 呼叫类型
- * @param option 开始通话附带的选项, 可以为空。如果需要 SDK 自动开启摄像头,需要指定 option 的视频采集参数 videoCaptureParam
- * @param completion 发起通话结果回调
- */
- - (void)start:(NSArray<NSString *> *)callees
- type:(NIMNetCallMediaType)type
- option:(nullable NIMNetCallOption *)option
- completion:(nullable NIMNetCallStartHandler)completion;
- /**
- * 被叫响应呼叫
- *
- * @param callID call id
- * @param accept 是否接听
- * @param option 开始通话附带的选项, 可以为空。如果需要 SDK 自动开启摄像头,需要指定 option 的视频采集参数 videoCaptureParam
- * @param completion 响应呼叫结果回调
- *
- * @discussion 被叫拒绝接听时, 主叫不需要再调用hangup:接口
- */
- - (void)response:(UInt64)callID
- accept:(BOOL)accept
- option:(nullable NIMNetCallOption *)option
- completion:(nullable NIMNetCallResponseHandler)completion;
- /**
- * 挂断通话
- *
- * @param callID 需要挂断电话的call id, 如果尚未获取到call id就填0
- *
- * @discussion 被叫在响应呼叫之前不要调用挂断接口
- */
- - (void)hangup:(UInt64)callID;
- /**
- * 预订多人会议
- *
- * @param meeting 预订的多人会议
- * @param completion 预订会议结果
- */
- - (void)reserveMeeting:(NIMNetCallMeeting *)meeting
- completion:(nullable NIMNetCallMeetingHandler)completion;
- /**
- * 加入多人会议
- *
- * @param meeting 需要加入的多人会议
- * @param completion 加入会议结果
- *
- * @discussion 如果需要 SDK 自动开启摄像头,需要在 meeting 中指定 option 的视频采集参数 videoCaptureParam
- */
- - (void)joinMeeting:(NIMNetCallMeeting *)meeting
- completion:(nullable NIMNetCallMeetingHandler)completion;
- /**
- * 离开多人会议
- *
- * @param meeting 需要离开的多人会议
- *
- * @discussion 当所有加入的人都离开了某会议, 该会议对应的名称才可以被重复预订
- *
- */
- - (void)leaveMeeting:(NIMNetCallMeeting *)meeting;
- /**
- * 开始视频采集。用于需要在开始音视频通话之前开启视频采集的场景
- *
- * @param param 视频采集参数
- *
- * @return 开始是否成功
- *
- * @discussion 视频采集开始以后无法再调用该接口进行更新设置。需要先停止采集以后才能再次开始
- */
- - (BOOL)startVideoCapture:(NIMNetCallVideoCaptureParam *)param;
- /**
- * 设置视频采集方向
- *
- * @param orientation 需要设置的方向
- *
- * @return 设置是否成功
- *
- * @discussion 用于互动直播场景。只能在开始视频采集以后调用
- */
- - (BOOL)setVideoCaptureOrientation:(NIMVideoOrientation)orientation;
- /**
- * 停止视频采集。用于在网络通话的自动停止视频采集选项 stopVideoCaptureOnLeave 未开启时主动管理采集的关闭操作
- */
- - (void)stopVideoCapture;
- /**
- * 切换网络通话摄像头
- *
- * @param camera 选择的摄像头
- *
- * @discussion 切换网络通话类型将丢失该设置
- */
- - (void)switchCamera:(NIMNetCallCamera)camera API_UNAVAILABLE(macos);
- /**
- * 设置摄像头关闭
- *
- * @param disable 是否关闭
- *
- * @return 设置是否成功
- *
- * @discussion 仅支持当前为视频模式时进行此设置, 切换网络通话类型将丢失该设置
- */
- - (BOOL)setCameraDisable:(BOOL)disable;
- /**
- * 通话中切换视频质量
- *
- * @param quality 期望的视频质量
- *
- * @return 是否设置成功. 如果用户尚未加入, 则无法设置
- */
- - (BOOL)switchVideoQuality:(NIMNetCallVideoQuality)quality;
- /**
- * 改变自己在会议中的角色
- *
- * @param actor 是否为发言者角色, 发言者发送音视频数据, 非发言者不发送音视频数据
- *
- * @return 设置是否成功
- */
- - (BOOL)setMeetingRole:(BOOL)actor;
- /**
- * 指定某用户设置是否对其静音
- *
- * @param mute 是否静音, 静音后将听不到该用户的声音
- * @param uid 用户 uid
- *
- * @return 是否设置成功. 如果用户尚未加入, 则无法设置
- */
- - (BOOL)setAudioMute:(BOOL)mute forUser:(NSString *)uid;
- /**
- * 指定某用户设置是否接收其视频
- *
- * @param mute 是否拒绝视频, 拒绝后将没有该用户视频数据回调
- * @param uid 用户uid
- *
- * @return 是否设置成功. 如果用户尚未加入, 则无法设置
- */
- - (BOOL)setVideoMute:(BOOL)mute forUser:(NSString *)uid;
- /**
- 设置禁止发送视频
- @param mute 是否禁止发送视频
- @return 是否设置成功. 如果用户尚未加入, 则无法设置
- */
- - (BOOL)setVideoSendMute:(BOOL)mute;
- /**
- * 发送网络通话的控制信息,用于方便通话双方沟通信息
- *
- * @param callID 控制信息相关通话的call id
- * @param type 控制类型
- */
- - (void)control:(UInt64)callID
- type:(NIMNetCallControlType)type;
- /**
- * 设置网络通话麦克风静音
- *
- * @param mute 是否开启麦克风静音
- *
- * @return 开启麦克风静音是否成功
- *
- * @discussion 该设置不影响伴音发送, 切换网络通话类型将丢失该设置
- */
- - (BOOL)setMute:(BOOL)mute;
- /**
- * 设置是否关闭语音发送,包含伴音
- *
- * @param mute 是否关闭语音发送
- *
- * @return 设置是否成功
- *
- */
- - (BOOL)setAudioSendMute:(BOOL)mute;
- /**
- * 设置网络通话扬声器模式
- *
- * @param useSpeaker 是否开启扬声器
- *
- * @return 开启扬声器是否成功
- *
- * @discussion 切换网络通话类型将丢失该设置
- */
- - (BOOL)setSpeaker:(BOOL)useSpeaker API_UNAVAILABLE(macos);
- /**
- * 切换网络通话类型
- *
- * @param type 通话类型
- *
- * @discussion 切换通话类型会丢失这些设置: 静音模式, 扬声器模式, 摄像头关闭, 切换摄像头
- */
- - (void)switchType:(NIMNetCallMediaType)type;
- /**
- * 设置视频最大编码码率
- *
- * @param bitrate 最大编码码率 (bps)
- *
- * @return 是否设置成功
- */
- - (BOOL)setVideoMaxEncodeBitrate:(NSUInteger)bitrate;
- /**
- * 切换视频编码器
- *
- * @param codec 视频编码器
- *
- * @return 是否设置成功. 如果用户尚未加入, 则无法设置
- *
- * @discussion 硬编码设置仅在iOS8及以上系统有效
- *
- */
- - (BOOL)switchVideoEncoder:(NIMNetCallVideoCodec)codec;
- /**
- * 切换视频解码器
- *
- * @param codec 视频解码器
- *
- * @return 是否设置成功. 如果用户尚未加入, 则无法设置
- *
- * @discussion 硬解码设置仅在iOS8及以上系统有效
- *
- */
- - (BOOL)switchVideoDecoder:(NIMNetCallVideoCodec)codec;
- /**
- * 选择视频调控策略
- *
- * @param videoAdaptiveStrategy 视频调控策略
- *
- * @return 是否设置成功.
- */
- - (BOOL)selectVideoAdaptiveStrategy:(NIMAVChatVideoAdaptiveStrategy)videoAdaptiveStrategy;
- /**
- * 发送视频 SampleBuffer
- *
- * @param buffer 只支持包含以下三种 CVPixelBuffer 数据格式的 sampleBuffer: kCVPixelFormatType_32BGRA、kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange、kCVPixelFormatType_420YpCbCr8BiPlanarFullRange
- *
- * @discussion 可以发送SDK回调上来的视频数据,也可以发送自定义视频数据 自定义数据输入不能超过720P
- *
- * @return 发送结果
- */
- - (nullable NSError *)sendVideoSampleBuffer:(CMSampleBufferRef)buffer;
- /**
- * 互动直播设置主画面
- *
- * @param uid 被设置的用户id
- *
- * @param completion 完成回调 如果设置成功 error 为 nil
- *
- * @discussion 在互动直播下,动态切换布局,设置用户为主画面,只有互动直播主播可以设置
- */
- - (void)setAsMainArea:(NSString *)uid completion:(void(^)(NSError * __nullable error))completion;
- /**
- * 切换互动直播推流地址
- *
- * @param url 推流地址
- *
- * @return 是否设置成功
- */
- - (BOOL)switchBypassStreamingUrl:(NSString *)url;
- /**
- 开始混音任务
-
- @param task 文件混音任务
-
- @return 结果, 如果成功开始了, 返回 nil
-
- @discussion 开始新的任务会结束正在进行中的任务
- */
- - (nullable NSError *)startAudioMix:(NIMNetCallAudioFileMixTask *)task;
- /**
- 更新混音任务
-
- @param task 文件混音任务
-
- @return 结果, 如果成功开始了, 返回 nil
-
- @discussion 可以更新循环播放次数和音量等
- */
- - (nullable NSError *)updateAudioMix:(NIMNetCallAudioFileMixTask *)task;
- /**
- 暂停混音
-
- @return 是否成功
- */
- - (BOOL)pauseAudioMix;
- /**
- 恢复混音
-
- @return 是否成功
- */
- - (BOOL)resumeAudioMix;
- /**
- 结束混音
-
- @return 是否成功
- */
- - (BOOL)stopAudioMix;
- /**
- 获取当前进行中的混音任务
- @return 混音任务. 如果没有当前任务则返回 nil
- */
- - (nullable NIMNetCallAudioFileMixTask *)currentAudioMixTask;
- /**
- 播放音效,用于在混音时播放短暂的音效
-
- @param task 音效任务。其中的 sendVolume 参数在播放音效中无效
-
- @return 结果, 如果成功开始了, 返回 nil
- */
- - (nullable NSError *)playSoundEffect:(NIMNetCallAudioFileMixTask *)task;
- /**
- 打开耳返
- */
- - (void)startEarBack;
- /**
- 关闭耳返
- */
- - (void)stopEarBack;
- /**
- 调节耳返音量
-
- @param volume 耳返音量 接受输入值为 0 到 10
-
- @return 是否调节成功
- */
- - (BOOL)changeEarBackVolume:(NSUInteger)volume;
- /**
- * 获得当前视频通话的本地预览层
- *
- * @return 预览层
- */
- - (nullable UIView *)localPreview;
- /**
- * 本地截图. 截取自己下一帧待发送的画面
- *
- * @param result 截图结果
- *
- * @discussion 如果截图失败, result 中 image 为 nil
- */
- - (void)snapshotFromLocalVideoCompletion:(void(^)(UIImage * __nullable image))result;
- /**
- * 获取正在进行中的网络通话call id
- *
- * @return call id, 如果没有正在进行中的通话则返回0
- */
- - (UInt64)currentCallID;
- /**
- * 获取当前网络通话中某用户的网络状态
- *
- * @param user 用户. 可以传入自己的 id 以获取自己的发送网络状况
- *
- * @return 网络状态
- */
- - (NIMNetCallNetStatus)netStatus:(NSString *)user;
- /**
- * 开始MP4文件录制, 录制通话过程中自己的音视频内容到MP4文件
- *
- * @param filePath 录制文件路径, SDK不负责创建目录, 请确保文件路径的合法性,
- * 也可以传入nil, 由SDK自己选择文件路径
- * @param videoBitrate 录制文件视频码率设置, 可以不指定, 由SDK自己选择合适的码率
- *
- * @param userId 录制用户对象的id
- *
- * @return 是否允许开始录制
- *
- * @discussion 只有通话连接建立以后才允许开始录制
- */
- - (BOOL)startRecording:(nullable NSURL *)filePath
- videoBitrate:(UInt32)videoBitrate
- uid:(NSString *)userId;
- /**
- * 停止MP4文件录制
- *
- * @param userId 录制用户对象的id
- *
- * @return 是否接受停止录制请求
- */
- - (BOOL)stopRecordingWithUid:(NSString *)userId;
- /**
- 开始通话录音. 录制通话中所有参与者的声音, 包含混音任务播放的声音, 录制成 aac 或者 wav 文件
-
- @param filePath 录制文件路径, 不包含文件类型后缀. 包含文件类型后缀的完整文件路径可以在开始录制以后通过 currentAudioRecordingFilePath 查询.
-
- @discussion SDK不负责创建目录, 请确保文件路径的合法性, 也可以传入 nil, 由 SDK 自己选择文件路径
- @param error 错误. 如果开始通话录音失败, 此处回填错误码
- @return 开始通话录音的结果.
- */
- - (BOOL)startAudioRecording:(nullable NSURL *)filePath
- error:(NSError * __nullable *)error;
- /**
- 结束通话录音
- */
- - (void)stopAudioRecording;
- /**
- 获取当前通话录音文件路径
-
- @return 当前通话录音文件路径. 如果没有进行中的通话录音则返回 nil
- */
- - (nullable NSURL *)currentAudioRecordingFilePath;
- /**
- * 获得 SDK 网络通话网络层log 文件路径
- *
- * @return SDK 网络通话 log
- */
- - (NSString *)netCallLogFilepath;
- /**
- * 添加网络通话委托
- *
- * @param delegate 网络通话委托
- */
- - (void)addDelegate:(id<NIMNetCallManagerDelegate>)delegate;
- /**
- * 移除网络通话委托
- *
- * @param delegate 网络通话委托
- */
- - (void)removeDelegate:(id<NIMNetCallManagerDelegate>)delegate;
- /**
- 选择滤镜类型
-
- @param type 滤镜类型
-
- @return 是否设置成功
- */
- - (BOOL)selectBeautifyType:(NIMNetCallFilterType)type;
- /**
- 改变焦距 实际放大倍数
-
- @param scale 放大倍数
-
- @return 是否设置成功
- */
- - (BOOL)changeLensPosition:(float)scale API_UNAVAILABLE(macos);
- /**
- 设置闪光灯开关
-
- @param isFlashOn 是否开启闪光灯
- */
- - (void)setCameraFlash:(BOOL)isFlashOn API_UNAVAILABLE(macos);
- /**
- 设置预览镜像
-
- @param isMirrorOn 是否开启预览镜像
- */
- - (void)setPreViewMirror:(BOOL)isMirrorOn ;
- /**
- 设置编码镜像
-
- @param isMirrorOn 是否开启编码镜像
- */
- - (void)setCodeMirror:(BOOL)isMirrorOn API_UNAVAILABLE(macos);
- /**
- 设置对焦模式
-
- @param mode 对焦模式
-
- @return 是否设置成功
- */
- - (BOOL)setFocusMode:(NIMNetCallFocusMode)mode API_UNAVAILABLE(macos);
- /**
- 获取摄像头支持的最大放大倍数
-
- * @return 放大倍数
- */
- - (CGFloat)getMaxZoomScale API_UNAVAILABLE(macos);
- /**
- 添加静态水印
-
- @param image 水印图片
-
- @param rect 水印具体位置和大小(x,y根据location位置,计算具体的位置信息)
-
- @param location 水印位置
-
- @return 是否设置成功
- */
- - (BOOL)addWaterMark:(UIImage*)image
- rect:(CGRect)rect
- location:(NIMNetCallWaterMarkLocation)location API_UNAVAILABLE(macos);
- /**
- 添加动态水印
-
- @param imageArray 动态图像数组
-
- @param count 播放速度的快慢:count代表count帧显示同一张图
-
- @param looped 是否循环,不循环就显示一次
-
- @param rect 具体位置和大小(x,y根据location位置,计算具体的位置信息)
-
- @param location 位置
-
- @return 是否设置成功
- */
- - (BOOL)addDynamicWaterMarks:(NSArray*)imageArray
- fpsCount:(unsigned int)count
- loop:(BOOL)looped
- rect:(CGRect)rect
- location:(NIMNetCallWaterMarkLocation)location API_UNAVAILABLE(macos);
- /**
- * 清除水印
- */
- - (void)cleanWaterMark API_UNAVAILABLE(macos);
- /**
- 手动对焦
-
- @param devicePoint 点
- */
- - (void)changeNMCVideoPreViewManualFocusPoint:(CGPoint)devicePoint API_UNAVAILABLE(macos);
- /**
- 设置对比度滤镜强度,支持自然 粉嫩 怀旧 黑白模式
-
- @param value 值 [0-4] 默认为 1
-
- @return 是否设置成功
- */
- - (BOOL)setContrastFilterIntensity:(float)value API_UNAVAILABLE(macos);
- /**
- 设置磨皮滤镜强度,支持自然 粉嫩 怀旧 黑白模式
-
- @param value 值 [0-1] 默认为 0
-
- @return 是否设置成功
- */
- - (BOOL)setSmoothFilterIntensity:(float)value API_UNAVAILABLE(macos);
- @end
- NS_ASSUME_NONNULL_END
|