Skip to content

streamStat

pengbin edited this page Aug 19, 2016 · 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)

状态名称 状态说明
KSYStreamErrorCode_NONE 正常无错误
KSYStreamErrorCode_CODEC_OPEN_FAILED 无法打开配置指示的CODEC
KSYStreamErrorCode_CONNECT_FAILED 连接出错,检查地址
KSYStreamErrorCode_CONNECT_BREAK 网络连接中断
、、、 、、、

- (void) onStreamError {
    KSYStreamErrorCode err = _kit.streamerBase.streamErrorCode;
    if ( KSYStreamErrorCode_KSYAUTHFAILED == err ) {
        NSLog(@"SDK auth failed, \npls check ak/sk");
    }
    else if ( KSYStreamErrorCode_CODEC_OPEN_FAILED == err) {
        NSLog(@"Selected Codec not supported \n in this version");
    }
    else if ( KSYStreamErrorCode_CONNECT_FAILED == err) {
        NSLog(@"Connecting error, pls check host url \nor network");
    }
    else if ( KSYStreamErrorCode_CONNECT_BREAK == err) {
        NSLog( @"Connection break");
    }
    else {
        _stat.text = [_kit getKSYStreamErrorCodeName:err];
    }
    // 断网重连
    if ( KSYStreamErrorCode_CONNECT_BREAK == err && _btnAutoReconnect.isOn ) {
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            [_kit.streamerBase stopStream];
            [_kit.streamerBase startStream:_hostURL];
            [self initStatData];
        });
    }
}

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