TTT Objective-C API Overview
三体云通过全球部署的虚拟网络,提供可以灵活搭配的 API 组合,为移动端到移动端以及移动端到 Web 端提供质量可靠的实时音视频通信。
方法
TTTRtcEngineKit 是 TTT SDK 的入口类,提供所有可供 App 调用的方法。
根据方法实现的功能,我们把所有方法分为以下几类。
核心方法
方法 | 功能 |
---|---|
sharedEngineWithAppId | 初始化引擎 |
destroy | 销毁 RtcEngine 实例 |
setChannelProfile | 设置频道模式 |
setClientRole | 设置直播场景的用户角色 |
joinChannelByKey | 加入频道 |
leaveChannel | 离开频道 |
renewChannelByKey | 更新 Token |
getSdkVersion | 获取SDK版本号 |
核心音频方法
方法 | 功能 |
---|---|
muteLocalAudioStream | 静音/取消静音 |
muteAllRemoteAudioStreams | 是否静音所有远端音频 |
muteRemoteAudioStream | 是否静音指定用户的音频 |
muteRemoteSpeaking | 是否禁言指定远端用户 |
adjustAudioMixingSoloVolume | 调节本地说话音量 |
enableHWAEC | 启用/禁用回声消除 |
enableAudioDataReport | 启用/关闭本地音频和远端音频数据回调 |
enableAudioVolumeIndication | 启用说话者音量提示 |
setPreferAudioCodec | 设置音频编码选项 |
sendAudioLyric | 发送歌词 |
核心视频方法
方法 | 功能 |
---|---|
enableVideo | 启用视频模块 |
disableVideo | 关闭视频模块 |
setVideoProfile | 设置视频编码属性 |
setupLocalVideo | 设置本地视频显示属性 |
setupRemoteVideo | 设置远端视频显示属性 |
startPreview | 开启视频预览 |
stopPreview | 停止视频预览 |
enableLocalVideo | 开关本地视频采集 |
muteRemoteVideoStream | 接收/停止接收指定视频流 |
muteAllRemoteVideoStreams | 接收/停止接收所有视频流 |
setWaterMarkView | 设置水印 |
原始音频数据处理
方法 | 功能 |
---|---|
setRecordingAudioFrameParametersWithSampleRate | 设置录制的声音格式 |
setPlaybackAudioFrameParametersWithSampleRate | 设置播放的声音格式 |
setMixedAudioFrameParametersWithSampleRate | 设置录制和播放声音混音后的数据格式 |
音频播放路由
方法 | 功能 |
---|---|
setDefaultAudioRouteToSpeakerphone | 设置默认的音频播放路由 |
setEnableSpeakerphone | 启用/关闭扬声器播放 |
isSpeakerphoneEnabled | 查询扬声器启用状态 |
耳返设置
方法 | 功能 |
---|---|
enableAudioEarBack | 开启耳返功能 |
setAudioEarBackVolume | 设置耳返音量 |
KTV
方法 | 功能 |
---|---|
pushExternalAudioData | 推送外部音频数据 |
音乐文件播放及混音设置
方法 | 功能 |
---|---|
startAudioMixing | 开始播放音乐文件 |
stopAudioMixing | 停止播放音乐文件 |
pauseAudioMixing | 暂停播放音乐文件 |
resumeAudioMixing | 恢复播放音乐文件 |
getAudioMixingDuration | 获取音乐文件播放时长 |
getAudioMixingCurrentPosition | 获取音乐文件播放进度 |
setAudioMixingPosition | 设置音乐文件的播放位置 |
adjustAudioMixingPlayoutVolume | 调节音乐文件播放音量 |
adjustAudioMixingPublishVolume | 调节音乐文件播放音量 |
sendAudioLyric | 发送歌词 |
音效文件播放管理
方法 | 功能 |
---|---|
getEffectsVolume | 获取音效文件播放音量 |
setEffectsVolume | 设置音效文件播放音量 |
setVolumeOfEffect | 实时调整音效文件播放音量 |
playEffect | 播放指定音效文件 |
stopEffect | 停止播放指定音效文件 |
stopAllEffects | 停止播放所有音效文件 |
preloadEffect | 将指定音效文件预加载至内存 |
unloadEffect | 从内存释放某个预加载的音效文件 |
pauseEffect | 暂停音效文件播放 |
pauseAllEffects | 暂停所有音效文件播放 |
resumeEffect | 恢复播放指定音效文件 |
resumeAllEffects | 恢复播放所有音效文件 |
网络相关测试
方法 | 功能 |
---|---|
enableLastmileTest | 启用网络测试 |
disableLastmileTest | 关闭网络测试 |
视频自采集
方法 | 功能 |
---|---|
setExternalVideoSource | 配置外部视频源 |
pushExternalVideoFrame | 推送外部视频帧 |
视频双流模式
方法 | 功能 |
---|---|
enableDualStreamMode | 开关视频双流模式 |
setRemoteVideoStream | 设置订阅的视频流类型 |
setRemoteDefaultVideoStreamType | 设置订阅的视频流类型 |
其他视频控制
方法 | 功能 |
---|---|
setLocalVideoFrameCaptureFormat | 设置本地视频帧采集格式 |
setRemoteVideoFrameOutputFormat | 设置远端视频帧输出格式 |
摄像头控制
方法 | 功能 |
---|---|
switchCamera | 切换前置/后置摄像头 |
setVideoMirrored | 设置前置摄像头镜像 |
setBeautyFaceStatus | 设置美颜效果 |
isCameraPositionFront | 是否前置摄像头 |
setRemoteVideoMirrored | 设置远端用户看视频镜像 |
屏幕共享
方法 | 功能 |
---|---|
isScreenRecording | 是否正在屏幕录制 |
startRecordScreen | 开始录制屏幕用作视频源 |
startRecordScreenAndSave | 开始录制屏幕并保存 |
stopScreenCapture | 停止屏幕共享 |
CDN推流设置
方法 | 功能 |
---|---|
configPublisher | 配置旁路直播推流 |
setVideoCompositingLayout | 设置画中画布局 |
setVideoMixerParams | 设置CDN推流视频参数 |
setAudioMixerParams | 设置CDN推流音频参数 |
setVideoMixerBackgroundImgUrl | 设置混屏背景图片 |
updateRtmpUrl | 更新rtmp推流地址 |
addPublishStreamUrl | 增加一路cdn推流地址 |
removePublishStreamUrl | 删除一路cdn推流地址 |
直推RTMP流
该部分功能用于不加入房间,直接推流到CDN
方法 | 功能 |
---|---|
startRtmpPublish | 开始RTMP推流 |
stopRtmpPublish | 停止RTMP推流 |
pauseRtmpPublish | 暂停RTMP推流 |
resumeRtmpPublish | 恢复RTMP推流 |
跨房间连麦
方法 | 功能 |
---|---|
subscribeOtherChannel | 订阅其它房间主播视频 |
unSubscribeOtherChannel | 取消订阅其它房间主播视频 |
客户端录音
方法 | 功能 |
---|---|
startAudioRecording | 订阅其它房间主播视频 |
stopAudioRecording | 取消订阅其它房间主播视频 |
其他方法
方法 | 功能 |
---|---|
enableCrossRoom | 启用同房间多主播 |
setLogFile | 设置日志文件路径 |
setLogFilter | 设置日志文件过滤器 |
setSignalTimeout | 设置信令超时时间 |
enableUplinkAccelerate | 启用上行加速 |
kickChannelUser | 踢出房间 |
getConnectionState | 获取网络连接状态 |
回调
TTTRtcEngineDelegate 接口类采用 Delegate 方法向 App 发送回调通知。
核心事件回调
回调 | 事件 |
---|---|
didOccurError | 发生错误 |
didJoinChannel | 加入频道成功 |
didLeaveChannelWithStats | 成功离开频道 |
didClientRoleChangedOfUid | 用户角色切换 |
didKickedOutOfUid | 用户被踢出 |
didJoinedOfUid | 用户加入 |
didOfflineOfUid | 用户离线 |
rtcEngineConnectionDidLost | 网络连接丢失回调 |
rtcEngineReconnectServerTimeout | 重连服务器失败 |
rtcEngineReconnectServerSucceed | 重连服务器成功 |
channelKeyPrivilegeWillExpire | channelKey即将过期 |
onSetSEI | 设置SEI |
onSetVideoCompositingLayout | 设置画中画布局的回调 |
媒体事件回调
回调 | 事件 |
---|---|
reportAudioLevel | 用户音量回调 |
rtcEngineCameraDidReady | 摄像头启用 |
rtcEngineVideoDidStop | 视频功能已停止 |
firstLocalVideoFrameWithSize | 本地首帧视频显示 |
firstRemoteVideoFrameDecodedOfUid | 已完成远端视频首帧解码 |
firstRemoteVideoFrameOfUid | 已显示远端视频首帧回调 |
firstAudioFrameDecoded | 远端音频第一帧解码回调 |
didSpeakingMuted | 禁止/允许用户发言回调 |
didAudioMuted | 远端用户音频已静音/取消静音 |
didVideoEnabled | 远端用户启用/关闭视频功能 |
didVideoEnabled | 用户添加/删除视频设备(多流) |
didAudioRouteChanged | 音频输出路由发生变化 |
localVideoFrameCaptured | 本地视频采集 |
remoteVideoFrameDecodedOfUid | 远端视频接收解码 |
数据统计事件回调
回调 | 事件 |
---|---|
localVideoStats | 本地视频统计 |
localAudioStats | 本地音频统计 |
remoteAudioStats | 远端音频统计 |
remoteVideoStats | 远端视频统计 |
reportRtcStats | RtcEngine统计数据 |
localAudioData | 本端音频采集数据 |
remoteAudioData | 远端音频数据 |
mixAudioData | 混音音频数据回调 |
伴奏音效播放事件回调
回调 | 事件 |
---|---|
rtcEngineAudioMixingPlayFinish | 伴奏播放完成 |
rtcEngineDidAudioEffectFinish | 本地音效文件播放已结束 |
receiveAudioLyricOfUid | 接收远端用户发来的歌词 |
其他回调
回调 | 事件 |
---|---|
rtcEngineOnMediaSending | 有媒体数据发送 |
dualStreamModeEnabled | 远端用户是否启用双流的回调 |
lastmileQuality | 网络质量检测回调 |
rtcEngineVideoMixerCreated | 混屏创建 |
onStatusOfRtmpPublish | 直推RTMP推流回调 |
reportRtmpStatus | RTMP推流回调 |
pullAudioData | 外部音频混音回调 |
connectionChangedToState | 网络连接状态发生改变 |
rtmpStreamingCreated | rtmp推流地址创建成功 |
TTTRtcEngineKit 方法
TTTRtcEngineKit 过期方法
- linkOtherAnchor:userID: |
- unlinkOtherAnchor:userID: |
详细描述
销毁引擎实例
+ (void)destroy
详情
调用该方法并不会销毁TTTRtcEngineKit对象,会释放一些SDK内部的资源设置频道模式
- (int)setChannelProfile:(TTTRtcChannelProfile)profile
参数
profile | 频道模式 TTTRtcChannelProfile |
返回值说明
0:方法调用成功
<0:方法调用失败
设置用户角色
- (int)setClientRole:(TTTRtcClientRole)role
参数
role | TTTRtcClientRole |
返回值说明
0:方法调用成功
<0:方法调用失败
详情
直播模式下,默认角色是观众。 主播角色拥有最高权限,可以对其他用户进行禁言,踢出等操作加入通话频道
- (int)joinChannelByKey:(NSString *)channelKey channelName:(NSString *)channelName uid:(int64_t)uid joinSuccess:(void(^)(NSString *channel, int64_t uid, NSInteger elapsed))joinSuccessBlock
参数
channelKey | 此为程序生成的Channel Key(当用户使用静态Key也即只使用App ID时, 该参数是可选的) |
channelName | 可以转换位long long类型的数字字符串 |
uid | 用户ID |
joinSuccessBlock | 用户加入成功回调 |
返回值说明
0:方法调用成功
<0:方法调用失败
详情
用户加入通话频道,在同一个频道内的用户可以互相通话,多个用户加入同一个频道,可以群聊。 使用不同 App ID 的应用程序是不能互通的。如果已在通话中,用户必须调用 leaveChannel 退出当前通话,才能进入下一个频道。 SDK 在音频通话中使用 iOS 系统的 AVAudioSession 共享对象进行录音和播放,用户对该对象的操作可能会影响 SDK 的音频相关功能离开频道
- (int)leaveChannel:(void(^)(TTTRtcStats *stats))leaveChannelBlock
参数
leaveChannelBlock | 成功离开频道的回调 |
返回值说明
0:方法调用成功
<0:方法调用失败
详情
当调用 joinChannelByKey API 方法后,必须调用 leaveChannel 结束通话,否则无法开始下一次通话
调用该方法不用等待对应的代理回调更新 channelKey
- (int)renewChannelByKey:(NSString *)channelKey
参数
channelKey | 此为程序生成的Channel Key |
返回值说明
0:方法调用成功
<0:方法调用失败
获取SDK版本号
+ (NSString *)getSdkVersion
返回值说明
返回对应SDK的版本号静音/取消静音
- (int)muteLocalAudioStream:(BOOL)mute
参数
mute | YES: 麦克风静音, NO: 取消静音 |
返回值说明
0:方法调用成功
<0:方法调用失败
Note
该方法作用是全局的,退出房间不会重置SDK内部状态,静音之后必须开启才能取消静音状态静音所有远端音频
- (int)muteAllRemoteAudioStreams:(BOOL)mute
参数
mute | YES: 停止播放所接收的音频流, NO: 恢复播放所接收的音频流 |
返回值说明
0:方法调用成功
<0:方法调用失败
Note
该方法作用是全局的,退出房间不会重置SDK内部状态静音指定远端用户
- (int)muteRemoteAudioStream:(int64_t)uid mute:(BOOL)mute
参数
uid | 用户ID |
mute | YES: 停止播放指定用户的音频流, NO: 恢复播放指定用户的音频流 |
返回值说明
0:方法调用成功
<0:方法调用失败
禁言指定远端用户
- (int)muteRemoteSpeaking:(int64_t)uid mute:(BOOL)mute
参数
uid | 用户ID |
mute | YES: 禁止发言, NO: 允许发言 |
返回值说明
0:方法调用成功
<0:方法调用失败
Note
直播模式下,主播可以禁言用户,被禁言的用户不会上传音频流,其他端会收到该用户被禁言的回调调节本地说话音量
- (int)adjustAudioMixingSoloVolume:(NSInteger)scale
参数
scale | 音量范围为0~100。默认100为原始音量 |
返回值说明
0:方法调用成功
<0:方法调用失败
Note
该方法作用是全局的,退出房间不会重置SDK内部状态启用/禁用回声消除
- (int)enableHWAEC:(BOOL)enable
参数
enable | 是否启用回声消除 |
返回值说明
0:方法调用成功
<0:方法调用失败
Note
该方法作用是全局的,退出房间不会重置SDK内部状态启用/关闭本地音频和远端音频数据回调
- (int)enableAudioDataReport:(BOOL)enableLocal remote:(BOOL)enableRemote
参数
enableLocal | YES: 获取本地音频数据,NO: 关闭获取本地音频数据 |
enableRemote | YES: 获取远端音频数据,NO: 关闭获取远端音频数据 |
返回值说明
0:方法调用成功
<0:方法调用失败
Note
该方法作用是全局的,退出房间不会重置SDK内部状态启用说话者音量提示
- (int)enableAudioVolumeIndication:(NSInteger)interval smooth:(NSInteger)smooth
参数
interval | 指定音量提示的时间间隔(<=0: 禁用音量提示功能;>0: 提示间隔,单位为毫秒。建议设置到大于200毫秒。) |
smooth | 平滑系数。默认可以设置为3 |
返回值说明
0:方法调用成功
<0:方法调用失败
Note
该方法作用是全局的,退出房间不会重置SDK内部状态设置音频编码选项
- (int)setPreferAudioCodec:(TTTRtcAudioCodecType)codecType bitrate:(int)bitrate channels:(int)channels
参数
codecType | TTTRtcAudioCodecType |
bitrate | 码率 |
channels | 声道 |
返回值说明
0:方法调用成功
<0:方法调用失败
Note
该方法作用是全局的,退出房间不会重置SDK内部状态
请在加入频道前调用该方法
停止/恢复音频采集和播放
- (int)stopAudioPlayAndRecord:(BOOL)stop
参数
stop | YES: 停止采集和播放 NO: 恢复采集和播放 |
返回值说明
0:方法调用成功
<0:方法调用失败
设置音频高音质选项
- (int)setHighQualityAudioParametersWithFullband:(BOOL)fullband stereo:(BOOL)stereo fullBitrate:(BOOL)fullBitrate
参数
fullband | 全频带编解码器(48kHz采样率 |
stereo | 立体声编解码器 |
fullBitrate | 高码率模式,建议仅在纯音频模式下使用 |
返回值说明
0:方法调用成功
<0:方法调用失败
Note
该方法作用是全局的,退出房间不会重置SDK内部状态
请在加入频道前开启高音质,需要全部的参数设置为YES。高音质会占用较大的带宽
开启视频模式
- (int)enableVideo
返回值说明
0:方法调用成功
<0:方法调用失败
Note
该方法作用是全局的,退出房间不会重置SDK内部状态
可以在加入频道前或者通话中调用,在加入频道前调用,则自动开启视频模式,在通话中调用则由音频模式切换为视频模式
关闭视频,开启纯音频模式
- (int)disableVideo
返回值说明
0:方法调用成功
<0:方法调用失败
Note
该方法作用是全局的,退出房间不会重置SDK内部状态
可以在加入频道前或者通话中调用,在加入频道前调用,则自动开启纯音频模式,在通话中调用则由视频模式切换为纯音频频模式
设置视频编码属性
- (int)setVideoProfile:(TTTRtcVideoProfile)profile swapWidthAndHeight:(BOOL)swapWidthAndHeight
- (int)setVideoProfile:(CGSize)videoSize frameRate:(NSUInteger)frameRate bitRate:(NSUInteger)bitRate
参数
profile | TTTRtcVideoProfile |
swapWidthAndHeight | 是否交换宽和高 |
videoSize | 视频分辨率 |
frameRate | 视频帧率 |
bitRate | 视频码率 |
返回值说明
0:方法调用成功
<0:方法调用失败
Note
该方法作用是全局的,退出房间不会重置SDK内部状态
iPhone竖屏模式下需要交换视频宽高
自定义视频相关参数,注意设置视频尺寸的时候交换宽高的问题
设置本地视频显示属性
- (int)setupLocalVideo:(TTTRtcVideoCanvas*)local
参数
local | TTTRtcVideoCanvas |
返回值说明
0:方法调用成功
<0:方法调用失败
设置远端视频显示属性
- (int)setupRemoteVideo:(TTTRtcVideoCanvas*)remote
参数
remote | TTTRtcVideoCanvas |
返回值说明
0:方法调用成功
<0:方法调用失败
启动本地视频预览
- (int)startPreview
返回值说明
0:方法调用成功
<0:方法调用失败
Note
需要上传本地视频建议开启本地预览。该方法可重复调用,需要对应调用stopPreview,否则无法关闭预览停止本地视频预览
- (int) stopPreview
返回值说明
0:方法调用成功
<0:方法调用失败
禁用/启用本地视频功能
- (int)enableLocalVideo:(BOOL)enabled
参数
enabled | YES: 启用本地视频(默认),NO: 禁用本地视频 |
返回值说明
0:方法调用成功
<0:方法调用失败
Note
该方法作用是全局的,退出房间不会重置SDK内部状态
允许/禁止播放指定的远端视频流
- (int)muteRemoteVideoStream:(int64_t)uid mute:(BOOL)mute deviceId:(NSString *)devId;
参数
uid | 用户ID |
mute | YES: 停止播放接收到的视频流,NO: 允许播放接收到的视频流 |
devId | 设备id(区分用户多个摄像头) |
返回值说明
0:方法调用成功
<0:方法调用失败
暂停所有远端视频流
- (int)muteAllRemoteVideoStreams:(BOOL)mute
参数
mute | YES: 停止播放接收到的所有视频流,NO: 允许播放接收到的所有视频流 |
返回值说明
0:方法调用成功
<0:方法调用失败
Note
该方法作用是全局的,退出房间不会重置SDK内部状态
设置水印
- (void)setWaterMarkView:(TView *)view;
参数
view | 非空显示视图水印,nil清除水印 |
Note
水印的大小位置以及透明度均由view自身属性制定
设置录制的声音格式
- (int)setRecordingAudioFrameParametersWithSampleRate:(NSInteger)sampleRate channel:(NSInteger)channel samplesPerCall:(NSInteger)samplesPerCall
参数
sampleRate | 采样率, 支持8000, 16000, 32000, 44100, 48000 |
channel | 声道数,可设置:1或2 |
samplesPerCall | 采样点数,建议设置:1024或2048 |
返回值说明
0:方法调用成功
<0:方法调用失败
设置播放的声音格式
- (int)setPlaybackAudioFrameParametersWithSampleRate:(NSInteger)sampleRate channel:(NSInteger)channel samplesPerCall:(NSInteger)samplesPerCall
参数
sampleRate | 采样率, 支持8000, 16000, 32000, 44100, 48000 |
channel | 声道数,可设置:1或2 |
samplesPerCall | 采样点数,建议设置:1024或2048 |
返回值说明
0:方法调用成功
<0:方法调用失败
设置录制和播放声音混音后的数据格式
- (int)setMixedAudioFrameParametersWithSampleRate:(NSInteger)sampleRate channel:(NSInteger)channel samplesPerCall:(NSInteger)samplesPerCall
参数
sampleRate | 采样率, 支持8000, 16000, 32000, 44100, 48000 |
channel | 声道数,可设置:1或2 |
samplesPerCall | 采样点数,建议设置:1024或2048 |
返回值说明
0:方法调用成功
<0:方法调用失败
设置默认的语音路由
- (int)setDefaultAudioRouteToSpeakerphone:(BOOL)defaultToSpeaker
参数
defaultToSpeaker | YES: 从扬声器出声,NO: 语音聊天:从听筒出声;视频聊天:从扬声器出声 |
返回值说明
0:方法调用成功
<0:方法调用失败
切换音频输出方式:扬声器或听筒
- (int)setEnableSpeakerphone:(BOOL)enableSpeaker
参数
enableSpeaker | YES: 音频输出至扬声器,NO: 语音会根据默认路由出声 |
返回值说明
0:方法调用成功
<0:方法调用失败
Note
该方法作用是全局的,退出房间不会重置SDK内部状态
是否是扬声器状态
- (BOOL)isSpeakerphoneEnabled
返回值说明
YES: 当前处于扬声器播放状态, NO: 当前处于听筒活着耳机状态
打开/关闭耳返功能
- (int)enableAudioEarBack:(BOOL)enable
参数
enable | YES: 打开耳返功能,NO: 关闭耳返功能 |
返回值说明
0:方法调用成功
<0:方法调用失败
Note
在插入耳机的情况下有效设置耳返音量
- (int)setAudioEarBackVolume:(NSUInteger)volume
参数
volume | 取值范围在 [0,100] 默认值为 100 |
返回值说明
0:方法调用成功
<0:方法调用失败
Note
在打开耳返的情况下有效推送外部音频数据
- (BOOL)pushExternalAudioData:(NSData *)data;
参数
data | 音频数据 |
返回值说明
YES:方法调用成功
NO:方法调用失败
Note
仅在使用KTV下可用,可参考demo开始客户端本地混音
- (int)startAudioMixing:(NSString *)filePath loopback:(BOOL)loopback replace:(BOOL)replace cycle:(NSInteger)cycle
参数
filePath | 指定需要混音的本地音频文件名和文件路径 |
loopback | True: 只有本地可以听到混音或替换后的音频流,False: 本地和对方都可以听到混音或替换后的音频流 |
replace | True: 音频文件内容将会替换本地录音的音频流,False: 音频文件内容将会和麦克风采集的音频流进行混音 |
cycle | 指定音频文件循环播放的次数 |
返回值说明
0:方法调用成功
<0:方法调用失败
停止客户端本地混音
- (int)stopAudioMixing
返回值说明
0:方法调用成功
<0:方法调用失败
暂停播放伴奏
- (int)pauseAudioMixing
返回值说明
0:方法调用成功
<0:方法调用失败
恢复播放伴奏
- (int)resumeAudioMixing
返回值说明
0:方法调用成功
<0:方法调用失败
调节伴奏音量
- (int)adjustAudioMixingVolume:(NSInteger)volume
参数
volume | 伴奏音量范围为0~100。默认100为原始文件音量 |
返回值说明
0:方法调用成功
<0:方法调用失败
Note
该方法作用是全局的,退出房间不会重置SDK内部状态
获取伴奏时长
- (int)getAudioMixingDuration
返回值说明
伴奏时长, 单位为秒
获取伴奏播放进度
- (int)getAudioMixingCurrentPosition
返回值说明
播放时长,单位为毫秒
拖动语音进度条
- (int)setAudioMixingPosition:(NSInteger)pos
参数
pos | 进度条位置,单位为毫秒 |
返回值说明
0:方法调用成功
<0:方法调用失败
调节伴奏本地播放音量
- (int)adjustAudioMixingPlayoutVolume:(NSUInteger)volume
参数
volume | 伴奏音量范围为0~100。默认100为原始文件音量 |
返回值说明
0:方法调用成功
<0:方法调用失败
Note
该方法作用是全局的,退出房间不会重置SDK内部状态
调节伴奏远端播放音量
- (int)adjustAudioMixingPublishVolume:(NSUInteger)volume;
参数
volume | 伴奏音量范围为0~100。默认100为原始文件音量 |
返回值说明
0:方法调用成功
<0:方法调用失败
Note
该方法作用是全局的,退出房间不会重置SDK内部状态
发送歌词
- (int)sendAudioLyric:(NSString *)lyric
参数
lyric | 歌词内容 |
返回值说明
0:方法调用成功
<0:方法调用失败
Note
歌词的内容会和音频进行同步
获取播放音效文件音量
- (double)getEffectsVolume
返回值说明
音量大小,取值范围为 [0.0, 100.0]
设置播放音效文件音量
- (int)setEffectsVolume:(double)volume
参数
volume | 取值范围为 [0.0, 100.0]。 100.0 为默认值。 |
返回值说明
0:方法调用成功
<0:方法调用失败
实时调整音效文件播放音量
- (int)setVolumeOfEffect:(int)soundId withVolume:(double)volume
参数
soundId | 音效文件id |
volume | 取值范围为 [0.0, 100.0]。 100.0 为默认值。 |
返回值说明
0:方法调用成功
<0:方法调用失败
播放指定音效文件
- (int)playEffect:(int)soundId filePath:(NSString *)filePath loopCount:(int)loopCount pitch:(double)pitch pan:(double)pan gain:(double)gain publish:(BOOL)publish
参数
soundId | 音效文件id |
filePath | 音效文件的绝对路径 |
loopCount | 音效循环播放的次数 |
pitch | 设置音效的音调,取值范围为 [0.5, 2]。默认值为 1.0,表示不需要修改音调。取值越小,则音调越低 |
pan | 是否改变音效的空间位置。取值范围为 [-1.0, 1.0 |
gain | 是否改变单个音效的音量。取值范围为 [0.0, 100.0]。默认值为 100.0。取值越小,则音效的音量越低 |
publish | 是否播放到远端 |
返回值说明
0:方法调用成功
<0:方法调用失败
停止播放指定音效文件
- (int)stopEffect:(int)soundId
参数
soundId | 音效文件id |
返回值说明
0:方法调用成功
<0:方法调用失败
停止播放所有音效文件
- (int)stopAllEffects
返回值说明
0:方法调用成功
<0:方法调用失败
将指定音效文件预加载至内存
- (int)preloadEffect:(int)soundId filePath:(NSString *)filePath
参数
soundId | 音效文件id |
filePath | 音效文件的绝对路径 |
返回值说明
0:方法调用成功
<0:方法调用失败
从内存释放某个预加载的音效文件
- (int)unloadEffect:(int)soundId
参数
soundId | 音效文件id |
返回值说明
0:方法调用成功
<0:方法调用失败
暂停音效文件播放
- (int)pauseEffect:(int)soundId
参数
soundId | 音效文件id |
返回值说明
0:方法调用成功
<0:方法调用失败
暂停所有音效文件播放
- (int)pauseAllEffects
返回值说明
0:方法调用成功
<0:方法调用失败
恢复播放指定音效文件
- (int)resumeEffect:(int)soundId
参数
soundId | 音效文件id |
返回值说明
0:方法调用成功
<0:方法调用失败
恢复播放所有音效文件
- (int)resumeAllEffects
返回值说明
0:方法调用成功
<0:方法调用失败
开启网络质量检测
- (int)enableLastmileTest
返回值说明
0:方法调用成功
<0:方法调用失败
关闭网络质量检测
- (int)disableLastmileTest
返回值说明
0:方法调用成功
<0:方法调用失败
配置外部视频源
- (int)setExternalVideoSource:(BOOL)enable useTexture:(BOOL)useTexture
参数
enable | 是否使用外部视频源 |
useTexture | 是否使用 Texture 作为输入 |
返回值说明
0:方法调用成功
<0:方法调用失败
Note
该方法作用是全局的,退出房间不会重置SDK内部状态
推送外部视频帧
- (BOOL)pushExternalVideoFrame:(TTTRtcVideoFrame *)videoFrame
参数
videoFrame | TTTRtcVideoFrame |
返回值说明
YES: 该帧推送成功
NO: 该帧推送失败
设置是否启用视频双流模式
- (int)enableDualStreamMode:(BOOL)enabled
参数
enabled | 是否启用视频双流模式 |
返回值说明
0:方法调用成功
<0:方法调用失败
Note
该方法作用是全局的,退出房间不会重置SDK内部状态
设置视频大小流
- (int)setRemoteVideoStream:(int64_t)uid type:(TTTRtcVideoStreamType)streamType
参数
uid | 用户ID |
streamType | TTTRtcVideoStreamType |
返回值说明
0:方法调用成功
<0:方法调用失败
设置视频大小流
- (int)setRemoteDefaultVideoStreamType:(TTTRtcVideoStreamType)streamType
参数
streamType | TTTRtcVideoStreamType |
返回值说明
0:方法调用成功
<0:方法调用失败
设置本地视频帧采集格式
- (int)setLocalVideoFrameCaptureFormat:(TTTRtcVideoFrameFormat)format
参数
format | TTTRtcVideoFrameFormat |
返回值说明
0:方法调用成功
<0:方法调用失败
Note
该方法作用是全局的,退出房间不会重置SDK内部状态
设置远端视频帧输出格式
- (int)setRemoteVideoFrameOutputFormat:(TTTRtcVideoFrameFormat)format
参数
format | TTTRtcVideoFrameFormat |
返回值说明
0:方法调用成功
<0:方法调用失败
Note
该方法作用是全局的,退出房间不会重置SDK内部状态
切换摄像头
- (int)switchCamera
返回值说明
0:方法调用成功
<0:方法调用失败
Note
该方法作用是全局的,退出房间不会重置SDK内部状态
设置前置摄像头镜像
- (int)setVideoMirrored:(BOOL)mirror
参数
mirror | YES: 开启镜像,NO: 关闭镜像 |
返回值说明
0:方法调用成功
<0:方法调用失败
Note
该方法作用是全局的,退出房间不会重置SDK内部状态
设置美颜效果
- (void)setBeautyFaceStatus:(BOOL)enable beautyLevel:(CGFloat)beautyLevel brightLevel:(CGFloat)brightLevel
参数
enable | YES-开启美颜, NO-关闭美颜 |
beautyLevel | 默认0.5, 0.0~1.0 |
brightLevel | 默认0.5, 0.0~1.0 |
返回值说明
0:方法调用成功
<0:方法调用失败
Note
该方法作用是全局的,退出房间不会重置SDK内部状态
是否前置摄像头
- (BOOL)isCameraPositionFront
参数
返回值说明
YES:前置摄像头
NO:后置摄像头
设置远端用户看视频镜像
- (int)setRemoteVideoMirrored:(BOOL)mirror
mirror | YES: 开启镜像,NO: 关闭镜像 |
返回值说明
YES:前置摄像头
NO:后置摄像头
Note
该接口对应本地预览结果进行镜像,包含前后摄像头
是否正在屏幕录制
- (BOOL)isScreenRecording
返回值说明
YES:正在录屏
NO:当前非录屏状态
开始录制屏幕用作视频源
- (int)startRecordScreen
返回值说明
0:方法调用成功
<0:方法调用失败
开始录制屏幕并保存
- (int)startRecordScreenAndSave:(NSString *)path width:(NSInteger)width height:(NSInteger)height
参数
path | 保存路径,如果值为nil,保存到系统相册 |
width | 视频宽度 |
height | 视频高度 |
返回值说明
0:方法调用成功
<0:方法调用失败
停止录制屏幕
- (int)stopRecordScreen
返回值说明
0:方法调用成功
<0:方法调用失败
配置旁路直播推流
- (int)configPublisher:(TTTPublisherConfiguration *)config
参数
config | TTTPublisherConfiguration |
返回值说明
0:方法调用成功
<0:方法调用失败
设置画中画布局
- (int)setVideoCompositingLayout:(TTTRtcVideoCompositingLayout*)layout
参数
layout | TTTRtcVideoCompositingLayout |
返回值说明
0:方法调用成功
<0:方法调用失败
设置CDN推流视频参数
- (void)setVideoMixerParams:(CGSize)videoSize videoFrameRate:(NSUInteger)videoFrameRate videoBitRate:(NSUInteger)videoBitRate
参数
videoSize | 视频分辨率 |
videoFrameRate | 视频帧率 |
videoBitRate | 视频码率 |
Note
该方法作用是全局的,退出房间不会重置SDK内部状态
设置CDN推流音频参数
- (void)setAudioMixerParams:(NSUInteger)samplerate channels:(NSUInteger)channels
参数
samplerate | 采样率 |
channels | 1单声道,2双声道 |
Note
该方法作用是全局的,退出房间不会重置SDK内部状态
更新rtmp推流地址
- (int)updateRtmpUrl:(NSString *)url;
参数
url | rtmp流地址 |
返回值说明
0:方法调用成功
<0:方法调用失败
增加一路cdn推流地址
- (int)addPublishStreamUrl:(NSString *)url
参数
url | rtmp流地址 |
返回值说明
0:方法调用成功
<0:方法调用失败
Note
在加入房间之后主播可以调用,通过setVideoCompositingLayout方法设置视频布局
删除一路cdn推流地址
- (int)removePublishStreamUrl:(NSString *)url
参数
url | rtmp流地址 |
返回值说明
0:方法调用成功
<0:方法调用失败
设置混屏背景图片
- (void)setVideoMixerBackgroundImgUrl:(NSString *)url forRtmpUrl:(NSString *)rtmpUrl
参数
url | 背景图片所在的地址 |
rtmpUrl | cdn推流地址 |
Note
该方法作用是全局的,退出房间不会重置SDK内部状态
开始RTMP推流
- (int)startRtmpPublish:(NSString *)rtmpUrl
参数
rtmpUrl | rtmp推流地址 |
返回值说明
0:方法调用成功
<0:方法调用失败
停止RTMP推流
- (int)stopRtmpPublish
返回值说明
0:方法调用成功
<0:方法调用失败
暂停RTMP推流
- (int)pauseRtmpPublish
返回值说明
0:方法调用成功
<0:方法调用失败
恢复RTMP推流
- (int)resumeRtmpPublish
返回值说明
0:方法调用成功
<0:方法调用失败
订阅其它房间主播视频
- (int)subscribeOtherChannel:(int64_t)channelId
参数
channelId | 其它房间Id |
返回值说明
0:方法调用成功
<0:方法调用失败
取消订阅其它房间主播视频
- (int)unSubscribeOtherChannel:(int64_t)channelId
参数
channelId | 其它房间Id |
返回值说明
0:方法调用成功
<0:方法调用失败
开始客户端录音
- (int)startAudioRecording:(NSString *)filePath quality:(TTTAudioRecordQuality)quality
参数
filePath | 录音文件的本地保存路径: xxx/.../xxx.aac, 路径不正确不能开启录制 |
quality | TTTAudioRecordQuality |
返回值说明
0:方法调用成功
<0:方法调用失败
停止客户端录音
- (int)stopAudioRecording
返回值说明
0:方法调用成功
<0:方法调用失败
配置外部音频源
- (int)setExternalAudioSource:(BOOL)enable sampleRate:(NSUInteger)sampleRate channels:(NSUInteger)channels
参数
enable | 是否启用外部音频源 |
sampleRate | 外部音频源的采样率 |
channels | 外部音频源的通道数 |
返回值说明
0:方法调用成功
<0:方法调用失败
推送外部音频采集数据
- (int)pushExternalAudioFrame:(int8_t *)data length:(int)len
参数
data | PCM数据 |
len | PCM数据长度 |
返回值说明
0:方法调用成功
<0:方法调用失败
拉取音频播放数据
- (int)pullRenderingAudioFrame:(int8_t *)data length:(int)len
参数
data | PCM数据 |
len | PCM数据长度 |
返回值说明
0:方法调用成功
<0:方法调用失败
启用同房间多主播
- (void)enableCrossRoom:(BOOL)enable
note
在加入房间之前调用,若启用该功能,允许房间内进入多个主播设置日志文件路径
- (int)setLogFile:(NSString *)filePath
参数
filePath | 日志文件的完整路径。该日志文件为UTF-8编码 |
返回值说明
0:方法调用成功
<0:方法调用失败
设置日志文件过滤器
- (int)setLogFilter:(TTTRtcLogFilter)filter
参数
filter | TTTRtcLogFilter |
返回值说明
0:方法调用成功
<0:方法调用失败
设置信令超时时间
- (int)setSignalTimeout:(NSUInteger)seconds
参数
seconds | seconds 超时时间(秒),默认90s |
返回值说明
0:方法调用成功
<0:方法调用失败
Note
该方法作用是全局的,退出房间不会重置SDK内部状态
是否启用上行加速
- (void)enableUplinkAccelerate:(BOOL)enable
参数
enable | 是否启用 |
踢出房间
- (int)kickChannelUser:(int64_t)uid
参数
uid | 被踢者userID |
返回值说明
0:方法调用成功
<0:方法调用失败
Note
仅在直播模式下,主播拥有该权限过期方法描述
发起跨房间连麦
- (int)linkOtherAnchor:(int64_t)sessionID userID:(int64_t)userID
参数
sessionID | 房间ID |
userID | 用户ID |
返回值说明
0:方法调用成功
<0:方法调用失败
结束跨房间连麦
- (int)unlinkOtherAnchor:(int64_t)sessionID userID:(int64_t)userID
参数
sessionID | 房间ID |
userID | 用户ID |
返回值说明
0:方法调用成功
<0:方法调用失败
TTTRtcEngineDelegate 代理回调
TTTRtcEngineDelegate 过期代理回调
详细描述
发生错误回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine didOccurError:(TTTRtcErrorCode)errorCode
参数
engine | TTTRtcEngineKit 对象 |
errorCode | TTTRtcErrorCode |
加入频道成功回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine didJoinChannel:(NSString*)channel withUid:(int64_t)uid elapsed:(NSInteger) elapsed
参数
engine | TTTRtcEngineKit 对象 |
channel | 频道名 |
uid | 用户ID |
elapsed | 从joinChannel开始到该事件产生的延迟(毫秒) |
成功离开频道的回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine didLeaveChannelWithStats:(TTTRtcStats *)stats
参数
engine | TTTRtcEngineKit 对象 |
stats | TTTRtcStats |
用户角色切换回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine didClientRoleChangedOfUid:(int64_t)uid role:(TTTRtcClientRole)role
参数
engine | TTTRtcEngineKit 对象 |
uid | 用户ID |
role | TTTRtcClientRole |
用户被踢出回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine didKickedOutOfUid:(int64_t)uid reason:(TTTRtcKickedOutReason)reason
参数
engine | TTTRtcEngineKit 对象 |
uid | 用户ID |
reason | TTTRtcKickedOutReason |
用户加入回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine didJoinedOfUid:(int64_t)uid clientRole:(TTTRtcClientRole)clientRole isVideoEnabled:(BOOL)isVideoEnabled elapsed:(NSInteger)elapsed
参数
engine | TTTRtcEngineKit 对象 |
uid | 用户ID |
role | TTTRtcClientRole |
isVideoEnabled | 是否启用本地视频 |
elapsed | 加入频道开始到该回调触发的延迟(毫秒) |
用户离线回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine didOfflineOfUid:(int64_t)uid reason:(TTTRtcUserOfflineReason)reason
参数
engine | TTTRtcEngineKit 对象 |
uid | 用户ID |
reason | TTTRtcUserOfflineReason |
网络连接丢失回调
- (void)rtcEngineConnectionDidLost:(TTTRtcEngineKit *)engine
详情
网络发生波动,10s没有重新连接上服务器触发该回调网络重连失败
- (void)rtcEngineReconnectServerTimeout:(TTTRtcEngineKit *)engine
详情
当网络异常断开后,将尝试重连
在限定的时间内没有连接上服务器,触发该回调
收到该回调,退出房间网络重连成功
- (void)rtcEngineReconnectServerSucceed:(TTTRtcEngineKit *)engine
详情
当网络异常断开后,重连成功channelKey即将过期
- (void)rtcEngine:(TTTRtcEngineKit *)engine channelKeyPrivilegeWillExpire:(NSString *)channelKey
参数
engine | TTTRtcEngineKit 对象 |
channelKey | 用户服务器生成用于验证用户权限 |
详情
时间距即将过期10~60s, 取channelKe有效时间的1/6,大于60s按照60s计算设置SEI的回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine onSetSEI:(NSString *)SEI
参数
engine | TTTRtcEngineKit 对象 |
SEI | JSON格式的SEI |
详情
直播模式下,副播收到SEI来确定对应主播、副播的位置设置画中画布局的回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine onSetVideoCompositingLayout:(TTTRtcVideoCompositingLayout*)layout
参数
engine | TTTRtcEngineKit 对象 |
layout | 画中画布局 |
详情
直播模式下,副播收到layout对象来确定对应主播、副播的位置用户音量回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine reportAudioLevel:(int64_t)userID audioLevel:(NSUInteger)audioLevel audioLevelFullRange:(NSUInteger)audioLevelFullRange
参数
engine | TTTRtcEngineKit 对象 |
userID | 用户ID |
audioLevel | 非线性区间[0,9] |
audioLevelFullRange | 线性区间[0,32768] |
详情
提示谁在说话及其音量,默认禁用。可通过enableAudioVolumeIndication方法设置摄像头启用回调
- (void)rtcEngineCameraDidReady:(TTTRtcEngineKit *)engine
视频功能停止回调
- (void)rtcEngineVideoDidStop:(TTTRtcEngineKit *)engine
本地首帧视频显示回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine firstLocalVideoFrameWithSize:(CGSize)size elapsed:(NSInteger)elapsed
参数
engine | TTTRtcEngineKit 对象 |
size | 视频流尺寸 |
elapsed | 加入频道开始到该回调触发的延迟(毫秒) |
远端首帧视频接收解码回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine firstRemoteVideoFrameDecodedOfUid:(int64_t)uid deviceId:(NSString *)devId size:(CGSize)size elapsed:(NSInteger)elapsed
参数
engine | TTTRtcEngineKit 对象 |
uid | 用户ID |
devId | 设备id |
size | 视频流尺寸 |
elapsed | 加入频道开始到该回调触发的延迟(毫秒) |
已显示远端视频首帧回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine firstRemoteVideoFrameOfUid:(int64_t)uid deviceId:(NSString *)devId size:(CGSize)size elapsed:(NSInteger)elapsed
参数
engine | TTTRtcEngineKit 对象 |
uid | 用户ID |
devId | 设备id |
size | 视频流尺寸 |
elapsed | 加入频道开始到该回调触发的延迟(毫秒) |
远端音频第一帧解码回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine firstAudioFrameDecoded:(int64_t)uid
参数
engine | TTTRtcEngineKit 对象 |
uid | 用户ID |
禁止/允许用户发言回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine didSpeakingMuted:(BOOL)muted ofUid:(int64_t)uid
参数
engine | TTTRtcEngineKit 对象 |
muted | YES: 禁止发言,NO: 允许发言 |
uid | 用户ID |
用户音频静音回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine didAudioMuted:(BOOL)muted byUid:(int64_t)uid
参数
engine | TTTRtcEngineKit 对象 |
muted | YES: 静音,NO: 取消静音 |
uid | 用户ID |
用户启用/关闭视频回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine didVideoEnabled:(BOOL)enabled byUid:(int64_t)uid
参数
engine | TTTRtcEngineKit 对象 |
enabled | YES: 该用户已启用了视频功能,NO: 该用户已关闭了视频功能 |
uid | 用户ID |
用户启用/关闭视频回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine didVideoEnabled:(BOOL)enabled deviceId:(NSString *)devId byUid:(int64_t)uid
参数
engine | TTTRtcEngineKit 对象 |
enabled | YES: 该用户已启用了视频功能,NO: 该用户已关闭了视频功能 |
devId | 设备id |
uid | 用户ID |
音频输出路由发生变化
- (void)rtcEngine:(TTTRtcEngineKit *)engine didAudioRouteChanged:(TTTRtcAudioOutputRouting)routing
参数
engine | TTTRtcEngineKit 对象 |
routing | TTTRtcAudioOutputRouting |
本地视频采集回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine localVideoFrameCaptured:(TTTRtcVideoFrame *)videoFrame
参数
engine | TTTRtcEngineKit 对象 |
videoFrame | TTTRtcVideoFrame |
远端视频接收解码回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine remoteVideoFrameDecodedOfUid:(int64_t)uid videoFrame:(TTTRtcVideoFrame *)videoFrame
参数
engine | TTTRtcEngineKit 对象 |
uid | 用户ID |
videoFrame | TTTRtcVideoFrame |
本地视频统计回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine localVideoStats:(TTTRtcLocalVideoStats *)stats
参数
engine | TTTRtcEngineKit 对象 |
stats | TTTRtcLocalVideoStats |
本地音频统计回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine localAudioStats:(TTTRtcLocalAudioStats *)stats
参数
engine | TTTRtcEngineKit 对象 |
stats | TTTRtcLocalAudioStats |
远端音频统计回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine remoteAudioStats:(TTTRtcRemoteAudioStats *)stats
参数
engine | TTTRtcEngineKit 对象 |
stats | TTTRtcRemoteAudioStats |
远端视频统计回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine remoteVideoStats:(TTTRtcRemoteVideoStats *)stats
参数
engine | TTTRtcEngineKit 对象 |
stats | TTTRtcRemoteAudioStats |
RtcEngine统计数据回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine reportRtcStats:(TTTRtcStats *)stats
参数
engine | TTTRtcEngineKit 对象 |
stats | TTTRtcStats |
本端音频采集数据回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine localAudioData:(char *)data dataSize:(NSUInteger)size sampleRate:(NSUInteger)sampleRate channels:(NSUInteger)channels
参数
engine | TTTRtcEngineKit 对象 |
data | PCM数据 |
size | PCM数据长度 |
sampleRate | 采样率 |
channels | 声道数 |
远端音频数据回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine remoteAudioData:(char *)data dataSize:(NSUInteger)size sampleRate:(NSUInteger)sampleRate channels:(NSUInteger)channels
参数
engine | TTTRtcEngineKit 对象 |
data | 音频数据 |
size | 数据长度 |
sampleRate | 采样率 |
channels | 声道数 |
混音音频数据回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine mixAudioData:(char *)data dataSize:(NSUInteger)size sampleRate:(NSUInteger)sampleRate channels:(NSUInteger)channels
参数
engine | TTTRtcEngineKit 对象 |
data | 音频数据 |
size | 数据长度 |
sampleRate | 采样率 |
channels | 声道数 |
伴奏播放完成的回调
- (void)rtcEngineAudioMixingPlayFinish:(TTTRtcEngineKit *)engine
音效播放完成的回调
- (void)rtcEngineDidAudioEffectFinish:(TTTRtcEngineKit *)engine soundId:(NSInteger)soundId
参数
engine | TTTRtcEngineKit 对象 |
soundId | 音效id |
接收远端用户发来的歌词
- (void)rtcEngine:(TTTRtcEngineKit *)engine receiveAudioLyricOfUid:(int64_t)uid lyric:(NSString *)lyric
参数
engine | TTTRtcEngineKit 对象 |
uid | 用户id |
lyric | 歌词内容 |
- (void)rtcEngineOnMediaSending:(TTTRtcEngineKit *)engine
远端用户是否启用双流的回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine dualStreamModeEnabled:(BOOL)enabled userID:(int64_t)userID
参数
engine | TTTRtcEngineKit 对象 |
enabled | 是否启用了双流 |
userID | 用户id |
网络质量检测回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine lastmileQuality:(TTTNetworkQuality)quality
参数
engine | TTTRtcEngineKit 对象 |
quality | TTTNetworkQuality |
直推RTMP推流回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine onStatusOfRtmpPublish:(TTTRtcRtmpPublishStatus)status
参数
engine | TTTRtcEngineKit 对象 |
status | TTTNetworkQuality |
RTMP推流回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine reportRtmpStatus:(BOOL)status rtmpUrl:(NSString*)rtmpUrl
参数
engine | TTTRtcEngineKit 对象 |
status | 成功或者失败 |
rtmpUrl | 推流地址 |
外部音频混音
- (void)rtcEngine:(TTTRtcEngineKit *)engine pullAudioData:(char *)data size:(int)size sampleRate:(NSUInteger)sampleRate channels:(int)channels
参数
engine | TTTRtcEngineKit 对象 |
data | 混音的数据 |
size | 混音的音频数据长度 |
sampleRate | 混音的采样率 |
channels | 混音数据声道数 |
网络连接状态发生改变
- (void)rtcEngine:(TTTRtcEngineKit *)engine connectionChangedToState:(TTTConnectionState)state
参数
engine | TTTRtcEngineKit 对象 |
state | TTTConnectionState |
rtmp推流地址创建成功
- (void)rtcEngine:(TTTRtcEngineKit *)engine rtmpStreamingCreated:(NSString *)rtmpUrl
参数
engine | TTTRtcEngineKit 对象 |
rtmpUrl | cdn推流地址 |
TTTRtcEngineDelegate 过期代理回调
- (void)rtcEngine:(TTTRtcEngineKit *)engine onAnchorEnter:(int64_t)sessionID userID:(int64_t)userID error:(TTTRtcErrorCode)error
- (void)rtcEngine:(TTTRtcEngineKit *)engine onAnchorEnter:(int64_t)sessionID userID:(int64_t)userID error:(TTTRtcErrorCode)error
- (void)rtcEngine:(TTTRtcEngineKit *)engine onAnchorExit:(int64_t)sessionID userID:(int64_t)userID
- (void)rtcEngine:(TTTRtcEngineKit *)engine onAnchorLinkResponse:(int64_t)sessionID userID:(int64_t)userID
- (void)rtcEngine:(TTTRtcEngineKit *)engine onAnchorUnlinkResponse:(int64_t)sessionID userID:(int64_t)userID reason:(TTTRtcAnchorExitReason)reason
- (void)rtcEngine:(TTTRtcEngineKit *)engine firstRemoteVideoFrameDecodedOfUid:(int64_t)uid size:(CGSize)size elapsed:(NSInteger)elapsed
- (void)rtcEngine:(TTTRtcEngineKit *)engine firstRemoteVideoFrameOfUid:(int64_t)uid size:(CGSize)size elapsed:(NSInteger)elapsed
TTTRtcEngineDelegate 对象
TTTRtcEngineDelegate 枚举
详细描述
TTTRtcStats
通话相关的统计信息
NSUInteger duration | 通话时长,单位为秒,累计值 |
NSUInteger txBytes | 发送字节数,累计值 |
NSUInteger rxBytes | 接收字节数,累计值 |
NSUInteger txAudioKBitrate | 音频发送码率 (kbps),瞬时值 |
NSUInteger rxAudioKBitrate | 音频接收码率 (kbps),瞬时值 |
NSUInteger txVideoKBitrate | 视频发送码率 (kbps),瞬时值 |
NSUInteger rxVideoKBitrate | 视频接收码率 (kbps),瞬时值 |
NSUInteger users | 房间内的瞬时人数 |
TTTRtcLocalVideoStats
本地视频统计信息
NSUInteger encodedBitrate | 编码的码率(kbps) |
NSUInteger sentBitrate | 发送的码率(kbps) |
NSUInteger sentFrameRate | 发送的帧率(fps) |
NSUInteger receivedBitrate | 接收的码率(kbps) |
float sentLossRate | 发送的丢包率 |
int bufferDuration | 视频缓冲区大小 |
TTTRtcLocalAudioStats
本地音频统计信息
NSUInteger encodedBitrate | 编码的码率(kbps) |
NSUInteger sentBitrate | 发送的码率(kbps) |
NSUInteger receivedBitrate | 接收的码率(kbps) |
NSUInteger captureDataSize | push数据量 |
CGFloat sentLossRate | 发送的丢包率 |
TTTRtcRemoteVideoStats
远端视频统计信息
int64_t uid | 用户id |
NSUInteger delay | 延迟 |
NSUInteger width | 视频宽 |
NSUInteger height | 视频高 |
NSUInteger receivedBitrate | 接收的码率 |
NSUInteger receivedFrameRate | 接收的帧率 |
NSUInteger receivedFrames | 接收的帧数 |
NSUInteger lostFrames | 丢掉的帧数 |
NSString *deviceId | 设备id(区分用户多摄像头) |
CGFloat loseRate | 丢包率 |
TTTRtcRemoteAudioStats
远端音频统计信息
int64_t uid | 用户id |
NSUInteger receivedBitrate | 接收码率 |
CGFloat loseRate | 丢包率 |
NSUInteger bufferDuration | 缓存时长 |
NSUInteger delay | 延迟 |
NSUInteger audioCodec | 编码格式 |
TTTRtcVideoCanvas
视频渲染对象
TImageView *view | 视频显示窗口。SDK不维护view的生命周期,应用程序应保证view在通话中是有效的。 |
TTTRtcRenderMode renderMode | 视频显示模式 |
int64_t uid | 用户id |
NSString *deviceId | 设备id(远端用户多流必选参数) |
TTTRtcVideoCompositingRegion
视频合成区域对象
int64_t uid | 待显示在该区域的主播用户 uid |
double x | [0.0, 1.0] 屏幕里该区域的横坐标 |
double y | [0.0, 1.0] 屏幕里该区域的纵坐标 |
double width | [0.0, 1.0] 该区域的实际宽度 |
double height | [0.0, 1.0] 该区域的实际高度 |
NSInteger zOrder | [0, 100] 用于定义图层。0表示该区域图像位于最下层,而100表示该区域图像位于最上层。 |
double alpha | [0.0, 1.0] 用于定义图像的透明度。0表示图像为透明的,1表示图像为完全不透明的。 |
TTTRtcRenderMode renderMode | 视频显示模式 |
NSString *deviceId | 设备id(远端用户多流必选参数) |
TTTRtcVideoCompositingLayout
视频合成布局
NSInteger canvasWidth | 整个屏幕(画布)的宽度 |
NSInteger canvasHeight | 整个屏幕(画布)的高度 |
NSString* backgroundColor | 屏幕(画布)的背景颜色,可根据 RGB 填写所需颜色对应的6位符号。e.g. "#c0c0c0" |
NSMutableArray *regions | 视频合成区域列表 |
NSString* appData | 应用程序自定义的数据 |
NSString *rtmpUrl | cdn推流地址,多个cdn推理地址必传参数 |
TTTPublisherConfiguration
直播推流配置
NSInteger bitrate | 旁路直播输出码流的码率。默认设置为 500 Kbps |
NSString *publishUrl | 合图推流地址 |
BOOL isPureAudio | 推送纯音频流 |
TTTPublisherConfigurationBuilder
直播推流配置生成器
- (TTTPublisherConfigurationBuilder *)setBitrate:(NSInteger)bitrate;
- (TTTPublisherConfigurationBuilder *)setPublisherUrl:(NSString *)url;
- (TTTPublisherConfigurationBuilder *)setPublishPureAudio:(BOOL)isPureAudio;
- (TTTPublisherConfiguration *)build;
TTTRtcVideoFrame
视频帧
TTTRtcVideoFrameFormat format | 视频帧的格式 |
CMTime time | 视频帧的时间戳,以毫秒为单位。不正确的时间戳会导致丢帧或者音视频不同步 |
CVPixelBufferRef textureBuffer | 视频buffer |
NSData *dataBuffer | raw data buffer. in case of ios texture, it is not used |
int strideInPixels | 视频帧的行间距,单位为像素而不是字节 |
int height | how many rows of pixels, in case of ios texture, it is not used |
int cropLeft | how many pixels to crop on the left boundary |
int cropTop | how many pixels to crop on the top boundary |
int cropRight | how many pixels to crop on the right boundary |
int cropBottom | how many pixels to crop on the bottom boundary |
int rotation | 0, 90, 180, 270 |
NSString *deviceId | 设备id |
枚举
TTTRtcErrorCode
错误代码
TTTRtc_Error_NoError | 没有错误 |
TTTRtc_Error_InvalidChannelName | 无效的房间名称(使用可转换大于0, long long类型的字符串) |
TTTRtc_Error_Enter_TimeOut | 超时,10秒未收到服务器返回结果 |
TTTRtc_Error_Enter_Failed | 无法连接服务器 |
TTTRtc_Error_Enter_VerifyFailed | 验证码错误 |
TTTRtc_Error_Enter_BadVersion | 版本错误 |
TTTRtc_Error_Enter_Unknown | 未知错误 |
TTTRtc_Error_Enter_NoAnchor | 直播模式房间内没有主播 |
TTTRtc_Error_NoAudioData | 长时间没有上行音频数据 |
TTTRtc_Error_NoVideoData | 无法连接服务器 |
TTTRtc_Error_NoReceivedAudioData | 长时间没有下行音频数据 |
TTTRtc_Error_NoReceivedVideoData | 长时间没有下行视频数据 |
TTTRtc_Error_InvalidChannelKey | 无效的channelKey |
TTTRtc_Error_Unknown | 未知错误 |
TTTRtcKickedOutReason
踢出房间原因
TTTRtc_KickedOut_KickedByHost | 被主播踢出 |
TTTRtc_KickedOut_PushRtmpFailed | rtmp推流失败 |
TTTRtc_KickedOut_ServerOverload | 服务器过载 |
TTTRtc_KickedOut_MasterExit | 主播已退出 |
TTTRtc_KickedOut_ReLogin | 重复登录 |
TTTRtc_KickedOut_NoAudioData | 长时间没有上行音频数据 |
TTTRtc_KickedOut_NoVideoData | 长时间没有上行视频数据 |
TTTRtc_KickedOut_NewChairEnter | 其他人以主播身份进入 |
TTTRtc_KickedOut_ChannelKeyExpired | Channel Key失效 |
TTTRtcChannelProfile
频道模式
TTTRtc_ChannelProfile_Communication | 通信(用于一对一或群聊,用户可以自由发言,互看视频) |
TTTRtc_ChannelProfile_LiveBroadcasting | 直播 |
TTTRtc_ChannelProfile_Game_FreeMode | 游戏(自由发言模式) |
TTTRtcClientRole
用户角色
TTTRtc_ClientRole_Anchor | 主播(该角色仅可用于直播模式) |
TTTRtc_ClientRole_Broadcaster | 副播 |
TTTRtc_ClientRole_Audience | 观众(默认) |
TTTRtcAudioCodecType
音频编码格式
TTTRtc_AudioCodec_AAC | 码率范围24kbps~96kbps |
TTTRtc_AudioCodec_ISAC_WB | 码率范围10kbps~32kbps |
TTTRtcVideoProfile
视频编码属性
Enum参数 | 分辨率 | 帧率 | 带宽kbps |
TTTRtc_VideoProfile_120P | 160x120 | 15 | 65 |
TTTRtc_VideoProfile_180P | 320x180 | 15 | 140 |
TTTRtc_VideoProfile_240P | 320x240 | 15 | 200 |
TTTRtc_VideoProfile_360P | 640x350 | 15 | 400 |
TTTRtc_VideoProfile_480P | 848x480 | 15 | 500 |
TTTRtc_VideoProfile_720P | 1280x720 | 15 | 1130 |
TTTRtc_VideoProfile_120P | 1920x1080 | 15 | 2080 |
TTTRtc_VideoProfile_Default | 640x360 | 15 | 400 |
TTTRtcUserOfflineReason
用户离线原因
TTTRtc_UserOffline_Quit | 用户主动离开 |
TTTRtc_UserOffline_Dropped | 因过长时间收不到对方数据包,超时掉线 |
TTTRtc_UserOffline_BecomeAudience | 当用户身份从主播切换为观众时触发 |
TTTRtcAudioOutputRouting
音频输出路由
TTTRtc_AudioOutput_Headset | 耳机或蓝牙 |
TTTRtc_AudioOutput_Speaker | 扬声器 |
TTTRtc_AudioOutput_Headphone | 手机听筒 |
TTTRtcLogFilter
日志过滤器
TTTRtc_LogFilter_Off | 不打印日志 |
TTTRtc_LogFilter_Debug | 打印Debug日志 |
TTTRtc_LogFilter_Info | 打印Info日志 |
TTTRtc_LogFilter_Warning | 打印Warning日志 |
TTTRtc_LogFilter_Error | 打印Error日志 |
TTTRtc_LogFilter_Critical | 打印Critical日志 |
TTTRtcRenderMode
视频显示模式
TTTRtc_Render_Hidden | 如果视频尺寸与显示视窗尺寸不一致,则视频流会按照显示视窗的比例进行周边裁剪或图像拉伸后填满视窗 |
TTTRtc_Render_Fit | 如果视频尺寸与显示视窗尺寸不一致,在保持长宽比的前提下,将视频进行缩放后填满视窗 |
TTTRtc_Render_Adaptive | 如果自己和对方都是竖屏,或者如果自己和对方都是横屏,使用TTTRtc_Render_Hidden;如果对方和自己一个竖屏一个横屏,则使用TTTRtc_Render_Fit |
TTTRtcVideoStreamType
视频流类型
TTTRtc_VideoStream_High | 视频大流 |
TTTRtc_VideoStream_Low | 视频小流 |
TTTNetworkQuality
网络质量
TTTNetworkQualityExcellent | 延迟<=50ms |
TTTNetworkQualityGood | 50ms<延迟<=100ms |
TTTNetworkQualityCommon | 100ms<延迟<=200ms |
TTTNetworkQualityPoor | 200ms<延迟<=500ms |
TTTNetworkQualityBad | 延迟>500ms |
TTTNetworkQualityDown | 没有网络 |
TTTRtcAnchorExitReason
连麦主播离开原因(已过期)
TTTRtc_AnchorExit_Unlink | 其他主播结束与“我”连麦,正常离开 |
TTTRtc_AnchorExit_Timeout | 心跳超时断开 |
TTTRtc_AnchorExit_LinkClose | 网络异常断开 |
TTTRtcVideoFrameFormat
视频帧格式
TTTRtc_VideoFrameFormat_Texture |
TTTRtc_VideoFrameFormat_I420 |
TTTRtc_VideoFrameFormat_NV12 |
TTTRtc_VideoFrameFormat_NV21 |
TTTRtc_VideoFrameFormat_RGBA |
TTTRtc_VideoFrameFormat_BGRA |
TTTRtc_VideoFrameFormat_ARGB |
TTTConnectionState
网络连接状态
TTTConnectionStateDisconnected | 未加入房间,加入房间失败后,或者离开房间之后 |
TTTConnectionStateConnecting | 加入房间正在建立网络连接 |
TTTConnectionStateConnected | 网络连接建立成功 |
TTTConnectionStateReconnecting | 网络连接重连中 |
TTTConnectionStateFailed | 网络连接失败 |
TTTAudioRecordQuality
录音音质
TTTAudioRecordQualityLow | 10 分钟的文件大小为 2.4M 左右 |
TTTAudioRecordQualityMedium | 10 分钟的文件大小为 3.6M 左右 |
TTTAudioRecordQualityHigh | 10 分钟的文件大小为 4.8M 左右 |