Обработка ошибок iOS SDK¶
При получении статуса потока kFPWCSStreamStatusFailed, метод FPWCSApi2Stream.getStatusInfo возвращает код возникшей ошибки, который может быть преобразован в текстовое описание при помощи метода streamStatusToString. Аналогичным образом обрабатываются и ошибки при совершении звонка.
Список ошибок¶
| Ошибка | Описание |
|---|---|
| kFPWCSStreamStatusInfo | |
| kFPWCSStreamStatusInfoFailedByIceError | Failed by ICE error |
| kFPWCSStreamStatusInfoFailedByIceTimeout | Failed by ICE timeout |
| kFPWCSStreamStatusInfoFailedByKeepAlive | Failed by ICE keep alive |
| kFPWCSStreamStatusInfoFailedByDtlsFingerprintError | Failed by DTLS fingerprint error |
| kFPWCSStreamStatusInfoFailedByDtlsError | Failed by DTLS error |
| kFPWCSStreamStatusInfoFailedByHlsWriterError | Failed by HLS writer error |
| FPWCSStreamStatusInfoFailedByRtmpWriterError | Failed by RTMP writer error |
| kFPWCSStreamStatusInfoFailedByRtpActivity | Failed by RTP activity |
| kFPWCSStreamStatusInfoStoppedBySessionDisconnect | Stopped by session disconnect |
| kFPWCSStreamStatusInfoStoppedByRestTerminate | Stopped by REST API /terminate query |
| kFPWCSStreamStatusInfoStoppedByPublisherStop | Stopped by publisher stop |
| kFPWCSStreamStatusInfoStoppedByUser | Stopped by user |
| kFPWCSStreamStatusInfoFailedByError | Failed by error |
| kFPWCSStreamStatusInfoFailedToAddStreamToProxy | Failed to add stream to proxy |
| kFPWCSStreamStatusInfoDistributorStopped | Distributor stopped |
| kFPWCSStreamStatusInfoPublishStreamIsNotReady | Publish stream is not ready |
| kFPWCSStreamStatusInfoStreamNotFound | Stream not found |
| kFPWCSStreamStatusInfoStreamNameAlreadyInUse | Stream name is already in use |
| kFPWCSStreamStatusInfoMediasessionIdNull | MediaSessionId is null |
| kFPWCSStreamStatusInfoMediasessionIdAlreadyInUse | MediaSessionId is already in use |
| kFPWCSStreamStatusInfoSessionNotReady | Session not ready |
| kFPWCSStreamStatusInfoSessionDoesNotExist | Session does not exist |
| kFPWCSStreamStatusInfoRtspHasWrongFormat | Rtsp has wrong format |
| kFPWCSStreamStatusInfoFileHasWrongFormat | File has wrong format |
| kFPWCSStreamStatusInfoFailedToConnectToRtspStream | Failed to connect to rtsp stream |
| kFPWCSStreamStatusInfoRtspStreamNotFound | Rtsp stream not found |
| kFPWCSStreamStatusInfoRtspAgentShutdown | RtspAgent shutdown |
| kFPWCSStreamStatusInfoStreamFailed | Stream failed |
| kFPWCSStreamStatusInfoNoCommonCodecs | No common codecs |
| kFPWCSStreamStatusInfoBadUri | Bad URI |
| kFPWCSStreamStatusInfoGotExceptionWhileStreamingFile | Got exception while streaming file |
| kFPWCSStreamStatusInfoRequestedStreamShutdown | Requested stream shutdown |
| kFPWCSStreamStatusInfoFailedToReadFile | Failed to read file |
| kFPWCSStreamStatusInfoFileNotFound | File not found |
| kFPWCSStreamStatusInfoFailedToConnectToOriginStream | Failed to connect to origin stream |
| kFPWCSStreamStatusInfoCdnStreamNotFound | CDN stream not found |
| kFPWCSStreamStatusInfoFailedToGetAgentStorage | Failed to get agent storage |
| kFPWCSStreamStatusInfoAgentServicingOriginStreamIsShuttingDown | Agent servicing origin stream is shutting down |
| kFPWCSStreamStatusInfoTerminatedByKeepAlive | Terminated by keep-alive |
| kFPWCSStreamStatusInfoTranscodingRequiredButDisabled | Transcoding is required, but disabled |
| kFPWCSStreamStatusInfoRestrictedAccess | Restricted access (to a CDN stream by ACL) |
| kFPWCSStreamStatusInfoRestrictedAccess | No available transcoders |
| kFPWCSCallStatusInfo | |
| kFPWCSCallStatusInfoNormalCallClearing | Normal call hangup |
| kFPWCSCallStatusInfoFailedBySessionCreation | Failed by session creation |
| kFPWCSCallStatusInfoFailedByIceError | Failed by ICE error |
| kFPWCSCallStatusInfoFailedByRtpActivity | Failed by RTP activity |
| kFPWCSCallStatusInfoFailedByRtmpWriterError | Failed by RTMP writer error |
| kFPWCSCallStatusInfoFailedByDtlsFingerprintError | Failed by DTLS fingerprint error |
| kFPWCSCallStatusInfoFailedByDtlsError | Failed by DTLS error |
| kFPWCSCallStatusInfoFailedByError | Failed by error |
| kFPWCSCallStatusInfoFailedByRequestTimeout | Failed by request timeout |
| kFPWCSCallStatusInfoTranscodingRequiredButDisabled | Transcoding is required, but disabled |
Пример кода обработки ошибок¶
В качестве примера рассмотрим код примера Two Way Streaming, файл имплементации ViewController.m
FPWCSApi2Model.streamStatusToString(), FPWCSApi2Stream.getStatus(), FPWCSApi2Stream.getStatusInfo()
view.text = [FPWCSApi2Model streamStatusToString:[stream getStatus]];
switch ([stream getStatus]) {
case kFPWCSStreamStatusFailed:
{
view.textColor = [UIColor redColor];
switch ([stream getStatusInfo]) {
case kFPWCSStreamStatusInfoSessionDoesNotExist:
view.text = @"Actual session does not exist";
break;
case kFPWCSStreamStatusInfoStoppedByPublisherStop:
view.text = @"Related publisher stopped its stream or lost connection";
break;
case kFPWCSStreamStatusInfoSessionNotReady:
view.text = @"Session is not initialized or terminated on play ordinary stream";
break;
case kFPWCSStreamStatusInfoRtspStreamNotFound:
view.text = @"Rtsp stream is not found, agent received '404-Not Found'";
break;
case kFPWCSStreamStatusInfoFailedToConnectToRtspStream:
view.text = @"Failed to connect to rtsp stream";
break;
case kFPWCSStreamStatusInfoFileNotFound:
view.text = @"File does not exist, check filename";
break;
case kFPWCSStreamStatusInfoFileHasWrongFormat:
view.text = @"Failed to play vod stream, this format is not supported";
break;
case kFPWCSStreamStatusInfoStreamNameAlreadyInUse:
view.text = @"Server already has a publish stream with the same name, try using different one";
break;
}
break;
}
...
}