Skip to content

streamStat

pengbin edited this page Dec 5, 2017 · 15 revisions

流状态查询

配置好采集参数之后,通过kit.streamerBase类的startStream和stopStream方法启动和停止推流。

状态

推流相关的消息通知需要通过NSNotificationCenter注册 KSYStreamStateDidChangeNotification来接收。 当收到推流状态变化的通知时,通过kit.streamerBase.streamState属性查询新的状态

状态名称 状态说明
KSYStreamStateIdle 初始化时状态为空闲
KSYStreamStateConnecting 连接中
KSYStreamStateConnected 已连接
KSYStreamStateDisconnecting 断开连接中
KSYStreamStateError 推流出错

注册通知:

[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(onStreamStateChange:)
                                                 name:KSYStreamStateDidChangeNotification
                                               object:nil];

响应事件:

- (void) onStreamStateChange:(NSNotification *)notification {
    if ( _kit.streamerBase.streamState == KSYStreamStateIdle) {
        NSLog(@"idle");
    }
    else if ( _kit.streamerBase.streamState == KSYStreamStateConnected){
        NSLog(@"connected");
    }
    else if (_kit.streamerBase.streamState == KSYStreamStateConnecting ) {
        NSLog(@"kit connecting");
    }
    else if (_kit.streamerBase.streamState == KSYStreamStateDisconnecting ) {
        NSLog(@"disconnecting");
    }
    else if (_kit.streamerBase.streamState == KSYStreamStateError ) {
        [self onStreamError];
    }
}

移除通知:

[[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:KSYStreamStateDidChangeNotification
                                                  object:nil];

##错误状态 请通过KSYStreamErrorCode 查询定义。 代码通过以下属性获取推流errorCode:

_kit.streamerBase.streamErrorCode

通过getKSYStreamErrorCodeName可以查询到错误码对应的字符串描述

- (NSString*) getKSYStreamErrorCodeName:(KSYStreamErrorCode)code;

错误码详细说明请见wiki: errorCode

错误处理和重连

请见 错误处理中的,自动重连实现

启动推流后卡住

如果调用 开启推流接口 [kit.streamerBase startStream:url] 后, 一直卡在connecting 状态, 没有错误通知. 这种情况请检查音视频数据是否有正常通过 process系列接口送入. 默认情况下 streamerBase 需要同时接收到音频数据和视频数据之后才能开始推流. 如果你们只调用了 processVideoSampleBuffer, 送入视频数据, streamerBase会一直等待音频数据; 反之,如果只调用了 processAudioSampleBuffer 送入音频数据, 也会一直等待视频数据.

如果是自定义的推流, 不需要音频, 可以通过streamerBase.bWithAudio = NO 来关闭音频通路 同理, 如果不需要视频, 可以通过streamerBase.bWithVideo = NO 来关闭视频频通路

1. 推流环节说明

2. 特色功能说明

2.1 采集

2.2 音频处理

2.3 视频处理

2.4 编码

2.5 推流

2.6 输入多样化

2.7 集成

3. 第三方功能

4. 技术专栏

5. 已知问题

8. FAQ

金山云计算

Clone this wiki locally