iOS SDK error handling¶
When stream status kFPWCSStreamStatusFailed
is received, FPWCSApi2Stream.getStatusInfo
method returns the code of error occurred, that can be converted to the description string with streamStatusToString
method. Errors occurred during SIP call are handled the same way.
Errors list¶
Error | Description string |
---|---|
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 |
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 |
Error handling code example¶
As an example. let's take theĀ Two Way Streaming
example code, implementation file 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;
}
...
}