通过阅读本文,您可以了解视频互动直播iOS端的集成操作。
环境要求
iOS端具体环境要求,更多信息,请参见使用限制。
前提条件
操作步骤
Demo目录结构说明
RTC把开发的业务代码封装到RTCVideoLiveRoom库中,因此只需在Podfile中指定RTCVideoLiveRoom库的路径,RTCVideoLiveRoom就可以以本地第三方库的形式移植到其他项目中。如下所示:
pod 'RTCVideoLiveRoom', :path => 'RTCVideoLiveRoom'
## pod 'RTCVideoLiveRoom' 说明项目依赖RTCVideoLiveRoom库
## path => 'RTCVideoLiveRoom' 指明RTCVideoLiveRoom库的位置(podfile文件路径)
RTCVideoLiveRoom组件库目录说明,如下所示:
文件名 | 说明 |
---|---|
RTCVideoLiveRoom.podspec | 组件的描述文件。 |
RTCVideoLiveRoom.bundle | 存放资源的bundle。 |
RTC | RTC相关功能的封装(建议直接复用)。 |
UI | UI相关文件。 |
API说明
API | 描述 |
---|---|
sharedInstance | 获取单例对象。 |
destorySharedInstance | 毁单例对象。 |
joinRoom | 加入直播。 |
leaveRoom | 退出直播。 |
setAudioEffectVolume | 设置音效音量。 |
setAudioAccompanyVolume | 设置伴奏音量。 |
enterSeat | 上麦。 |
leavelSeat | 下麦。 |
enableEarBack | 设置耳返。 |
startAudioAccompany | 播放伴奏。 |
stopAudioAccompany | 停止伴奏。 |
playAudioEffect | 播放音效。 |
stopAudioEffect | 停止音效。 |
setAudioEffectReverbMode | 设置音效场景(混音模式)。 |
setDelegate | 设置监听。 |
switchCamera | 翻转摄像头。 |
setWhiteLevel | 设置美白效果。 |
setSmoothLevel | 设置磨皮效果。 |
getWhiteLevel | 获取美白等级。 |
getSmoothLevel | 获取磨皮等级。 |
createRoom | 创建房间。 |
destroyRoom | 销毁房间。 |
kickout | 踢人。 |
startCameraPreView | 本地预览。 |
stopCameraPreView | 停止本地预览。 |
startPlay | 播放远端画面。 |
API | 描述 |
---|---|
onEnterSeat | 用户上麦通知。 |
onLeaveSeat | 用户下麦通知。 |
onOccurError | 错误信息通知。 |
onJoinChannelResult | 加入频道结果回调。 |
onLeaveChannelResult | 离开频道结果回调。 |
onRoomDestroy | 房间被销毁的回调。 |
onAudioPlayingStateChanged | 伴奏播放回调。 |
onNetworkQualityChanged | 网络状态回调。 |
onKickedOut | 被踢出房间的回调。 |
功能实现接口
- 获取单例对象
接口名称:sharedInstance。
获取BaseRTCAudioLiveRoom的实例对象,初始化RTC SDK。
/// @brief 获取单例 /// @return RTCAudioliveRoomManager 单例对象 + (RTCVideoliveRoom *) sharedInstance;
- 毁单例对象
接口名称:destorySharedInstance。
销毁BaseRTCAudioLiveRoom的实例对象,销毁后需要再调用sharedInstance接口再次初始化实例。
/// 销毁RTCSDK - (void)destroySharedInstance;
- 加入房间
接口名称:joinRoom。
观众端调用,通过房间号等信息获取播放链接并播放旁路流。
/// 加入房间 /// @param channelId 频道 /// @param userId 观众id /// @param userName 观众昵称 /// @param preview 预览view /// @param handler 回调 - (void)joinRoom:(NSString *)channelId userId:(NSString *)userId userName:(NSString *)userName preview:(UIView *)preview complete:(void(^)(NSInteger result))handler;
- 离开房间
接口名称:leaveRoom。
观众端调用,离开房间。
/// 观众调用 退出直播 /// @param handler 回调 - (void)leaveRoom:(void(^)(NSInteger result))handler;
- 设置音效音量
接口名称:setAudioEffectVolume。
同时设置播放和推流的音量。
/// 设置音效的音量 /// @param soundId 音效id /// @param volume 音量 0~100 - (int)setAudioEffectVolumeWithSoundId:(NSInteger)soundId volume:(NSInteger)volume;
- 设置伴奏音量
接口名称:setAudioAccompanyVolume。
同时设置播放和推流的音量。
/// 设置背景音乐音量 /// @param volume 音量 0~100 - (int)setAudioAccompanyVolume:(NSInteger)volume;
- 上麦
接口名称:enterSeat。
切换互动角色。
/// 上麦 /// @param handler 回调 - (void)enterSeat:(void(^)(NSInteger result))handler;
- 下麦
接口名称:leavelSeat。
切换观众角色。
/// 下麦 /// @param handler 回调 - (void)leaveSeat:(void(^)(NSInteger result))handler;
- 是否开启耳返
接口名称:enableEarBack。
/// 是否开启耳返 /// @param enable YES/NO - (int)enableEarBack:(BOOL)enable;
- 播放伴奏
接口名称:startAudioAccompany。
/// 播放背景音乐 /// @param filePath 文件路径 /// @param publish 是否推送远端 - (int)startAudioAccompanyWithFile:(NSString *)filePath publish:(BOOL)publish;
- 停止伴奏
接口名称:stopAudioAccompany。
/// 停止播放背景音乐 - (int)stopAudioAccompany;
- 播放音效
接口名称:playAudioEffect。
/// 播放音效 /// @param soundId 音效id /// @param filePath 资源路径 /// @param publish 是否推送远端 - (int)playEffectSoundtWithSoundId:(NSInteger)soundId filePath:(NSString *)filePath publish:(BOOL)publish;
- 停止音效
接口名称:stopAudioEffect。
/// 停止播放音效 /// @param soundId 音效id - (int)stopAudioEffectWithSoundId:(NSInteger)soundId;
- 设置音效场景(混音模式)
接口名称:setAudioEffectReverbMode。
/// 设置音效混响模式 /// @param mode 混响模式 - (int)setAudioEffectReverbMode:(AliRtcAudioEffectReverbMode)mode;
- 设置监听
接口名称:setDelegate。
- (void)setDelegate:(id<RTCVideoliveRoomDelegate> _Nullable)delegate;
- 翻转摄像头
接口名称:switchCamera。
/// 切换摄像头 - (void)switchCamera;
- 设置美白效果
接口名称:setWhiteLevel。
- (void)setWhiteLevel:(NSInteger)whiteLevel;
- 设置磨皮效果
接口名称:setSmoothLevel。
- (void)setSmoothLevel:(NSInteger)smoothLevel;
- 获取美白等级
接口名称:getWhiteLevel。
-(NSInteger)whiteLevel;
- 获取磨皮等级
接口名称:getSmoothLevel。
- (NSInteger)smoothLevel;
- 创建房间
接口名称:createRoom。
主播调用,创建RTC频道并加入。
/// 加入频道 /// @param channelId 频道名称 /// @param userName 任意用于显示的用户名称。不是User ID /// @param userId 角色 /// @param handler 回调 - (void)createRoom:(NSString *)channelId userName:(NSString *)userName userId:(NSString *)userId complete:(void(^)(AliRtcAuthInfo *authInfo, NSInteger errorCode))handler;
- 销毁房间
接口名称:destroyRoom。
主播调用,销毁RTC频道并退出。
/// 主播调用 销毁房间 /// @param handler 回调 - (void)destroyRoom:(void(^)(NSInteger result))handler;
- 踢人
接口名称:kickout。
主播调用,将连麦观众都踢下线。
/// 踢出房间的其他用户 /// @param handler 回调 - (void)kickout:(void(^)(NSInteger result))handler;
- 本地预览
接口名称:startCameraPreView。
/// 开启本地预览 /// @param preview 预览View - (void)startCameraPreView:(UIView *)preview;
- 停止本地预览
接口名称:stopCameraPreView。
/// 停止本地预览 - (void)stopCameraPreview;
- 播放远端画面
接口名称:startPlay。
/// 播放远端画面 /// @param preview 预览的view /// @param userId 对方的userId - (void)startPlay:(UIView *)preview userId:(NSString *)userId;
回调接口
- 用户上麦通知
回调名称:onEnterSeat。
/// 远端用户上麦通知 /// @param userId 麦序 - (void)onEnterSeat:(NSString *)userId;
- 用户下麦通知
回调名称:onLeaveSeat
/// 远端用户下线通知 /// @param userId 麦序 - (void)onLeaveSeat:(NSString *)userId;
- 错误信息通知
回调名称:onOccurError。
- (void)onOccurError:(int)error;
- 创建房间的回调
回调名称:onJoinChannelResult。
- (void)onJoinChannelResult:(int)result authInfo:(AliRtcAuthInfo *)authInfo;
- 退出房间的回调
回调名称:onLeaveChannelResult。
- (void)onLeaveChannelResult:(int)result;
- 伴奏播放回调
回调名称:onAudioPlayingStateChanged。
背景音乐播放状态的回调。
- (void)onAudioPlayingStateChanged:(AliRtcAudioPlayingStateCode)playState errorCode:(AliRtcAudioPlayingErrorCode)errorCode;
- 房间被销毁回调
回调名称:onRoomDestroy。
/// 房间被销毁通知 - (void)onRoomdestroy;
- 网络质量变化时回调
回调名称:onNetworkQualityChanged。
- (void)onNetworkQualityChanged:(NSString *)uid upNetworkQuality:(AliRtcNetworkQuality)upQuality downNetworkQuality:(AliRtcNetworkQuality)downQuality;
- 被踢出房间的回调
回调名称:onKickedOut。
/// 被踢出房间 - (void)onkickedOut;