Skip to content

retryConnect

Franken Zeng edited this page Jul 19, 2017 · 7 revisions

重新连接

当推流过程中遇到一定错误时,需要重新推流。重试逻辑不包含在libksyguplive内,请自行完成重试逻辑。

一、出现需要重试的错误码:

二、监听回调

监听KSYStreamStateDidChangeNotification,当回调中查询_kit.streamerBase.streamState状态,当streamState处于KSYStreamStateError时,处理具体的streamErrorCode错误码。

if(_kit.streamerBase.streamState == KSYStreamStateError) {
    [self onStreamError:_kit.streamerBase.streamErrorCode];
}

三、处理逻辑

只需要调用[KSYStreamerBase startStream:]

- (void) onStreamError:(KSYStreamErrorCode) errCode{
    _ctrlView.lblStat.text  = [_kit.streamerBase getCurKSYStreamErrorCodeName];
    if (errCode == KSYStreamErrorCode_CONNECT_BREAK) {
        // Reconnect
        [self tryReconnect];
    }
    else if (errCode == KSYStreamErrorCode_AV_SYNC_ERROR) {
        NSLog(@"audio video is not synced, please check timestamp");
        [self tryReconnect];
    }
    else if (errCode == KSYStreamErrorCode_CODEC_OPEN_FAILED) {
        NSLog(@"video codec open failed, try software codec");
        _kit.streamerBase.videoCodec = KSYVideoCodec_X264;
        [self tryReconnect];
    }
}

- (void) tryReconnect {
    dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC));
    dispatch_after(delay, dispatch_get_main_queue(), ^{
        NSLog(@"try again");
        _kit.streamerBase.bWithVideo = YES;
        [_kit.streamerBase startStream:self.hostURL];
    });
}

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