Обработка ошибок WebSDK¶
При получении статуса сессии, потока или звонка FAILED
, метод Stream.getInfo()
возвращает текстовое описание возникшей ошибки.
Список ошибок¶
Error | Description string |
---|---|
streamStatusInfo | |
FAILED_BY_ICE_ERROR | Failed by ICE error |
FAILED_BY_ICE_TIMEOUT | Failed by ICE timeout |
FAILED_BY_KEEP_ALIVE | Failed by ICE keep alive |
FAILED_BY_DTLS_FINGERPRINT_ERROR | Failed by DTLS fingerprint error |
FAILED_BY_DTLS_ERROR | Failed by DTLS error |
FAILED_BY_HLS_WRITER_ERROR | Failed by HLS writer error |
FAILED_BY_RTMP_WRITER_ERROR | Failed by RTMP writer error |
FAILED_BY_RTP_ACTIVITY | Failed by RTP activity |
STOPPED_BY_SESSION_DISCONNECT | Stopped by session disconnect |
STOPPED_BY_REST_TERMINATE | Stopped by /terminate REST query |
STOPPED_BY_PUBLISHER_STOP | Stopped by publisher stop |
STOPPED_BY_USER | Stopped by user |
FAILED_BY_ERROR | Failed by error |
FAILED_TO_ADD_STREAM_TO_PROXY | Failed to add stream to proxy |
DISTRIBUTOR_STOPPED | Distributor stopped |
PUBLISH_STREAM_IS_NOT_READY | Publish stream is not ready |
STREAM_NOT_FOUND | Stream not found |
STREAM_NAME_ALREADY_IN_USE | Stream name is already in use |
MEDIASESSION_ID_NULL | MediaSessionId is null |
MEDIASESSION_ID_ALREADY_IN_USE | MediaSessionId is already in use |
SESSION_NOT_READY | Session not ready |
SESSION_DOES_NOT_EXIST | Session does not exist |
RTSP_HAS_WRONG_FORMAT | Rtsp has wrong format |
FILE_HAS_WRONG_FORMAT | File has wrong format |
FAILED_TO_CONNECT_TO_RTSP_STREAM | Failed to connect to rtsp stream |
RTSP_STREAM_NOT_FOUND | Rtsp stream not found |
RTSPAGENT_SHUTDOWN | RtspAgent shutdown |
STREAM_FAILED | Stream failed |
NO_COMMON_CODECS | No common codecs |
BAD_URI | Bad URI |
GOT_EXCEPTION_WHILE_STREAMING_FILE | Got exception while streaming file |
REQUESTED_STREAM_SHUTDOWN | Requested stream shutdown |
FAILED_TO_READ_FILE | Failed to read file |
FILE_NOT_FOUND | File not found |
FAILED_TO_CONNECT_TO_ORIGIN_STREAM | Failed to connect to origin stream |
CDN_STREAM_NOT_FOUND | CDN stream not found |
FAILED_TO_GET_AGENT_STORAGE | Failed to get agent storage |
AGENT_SERVICING_ORIGIN_STREAM_IS_SHUTTING_DOWN | Agent servicing origin stream is shutting down |
TERMINATED_BY_KEEP_ALIVE | Terminated by keep-alive |
TRANSCODING_REQUIRED_BUT_DISABLED | Transcoding is requred, but disabled |
NO_AVAILABLE_TRANSCODERS | No available transcoder nodes in CDN |
callStatusInfo | |
FAILED_BY_SESSION_CREATION | Failed by session creation |
FAILED_BY_ICE_ERROR | Failed by ICE error |
FAILED_BY_RTP_ACTIVITY | Failed by RTP activity |
FAILED_BY_RTMP_WRITER_ERROR | Failed by RTMP writer error |
FAILED_BY_DTLS_FINGERPRINT_ERROR | Failed by DTLS fingerprint error |
FAILED_BY_DTLS_ERROR | Failed by DTLS error |
FAILED_BY_ERROR | Failed by error |
FAILED_BY_REQUEST_TIMEOUT | Failed by request timeout |
TRANSCODING_REQUIRED_BUT_DISABLED | Transcoding is requred, but disabled |
errorInfo | |
NONE_OF_MEDIAPROVIDERS_AVAILABLE | None of MediaProviders available |
NONE_OF_PREFERRED_MEDIAPROVIDERS_AVAILABLE | None of preferred MediaProviders available |
FLASHPHONER_API_NOT_INITIALIZED | Flashphoner API is not initialized |
OPTIONS_URLSERVER_MUST_BE_PROVIDED | options.urlServer must be provided |
INVALID_SESSION_STATE | Invalid session state |
OPTIONS_MUST_BE_PROVIDED | options must be provided |
INVALID_CALL_STATE | Invalid call state |
EVENT_CANT_BE_NULL | Event can't be null |
CALLBACK_NEEDS_TO_BE_A_VALID_FUNCTION | Callback needs to be a valid function |
INVALID_SESSION_STATE | Invalid session state |
OPTIONS_NAME_MUST_BE_PROVIDED | options.name must be provided |
CAN_NOT_SWITCH_CAM | Number of cams is less than 2 or already used custom stream |
CAN_NOT_SWITCH_MIC | Number of mics is less than 2 or already used custom stream |
LOCAL_ERROR | Local error raised in browser |
Перехват локальных ошибок¶
При перехвате ошибки, возникшей в локальном браузере, метод Stream.getInfo()
возвращает значение Flashphoner.constants.ERROR_INFO.LOCAL_ERROR
. При этом метод Stream.getErrorInfo() возвращает описание возникшей ошибки на основе перехваченного исключения, например:
- Requested device not found - отключены все микрофоны или камеры
- Could not start video source - камера захвачена другим приложением (диагностика в Chromium-браузере)
- Failed to allocate videosource - камера захвачена другим приложением (диагностика в Firefox)
- Permission denied - не предоставлен доступ к камере и/или микрофону
- Invalid constraint - выбрано разрешение, которое не поддерживается камерой в Safari
- This provider doesn't support getMediaAccess - используется WSPlayer, либо страница публикации открыта через небезопасное соединение (HTTP)
Пример кода обработки ошибок¶
В качестве примера рассмотрим код Two Way Streaming версии с хэшем 501f72f, которая доступна для скачивания в сборке 0.5.28.2753.143
function setStatus(selector, status, stream) {
var statusField = $(selector);
statusField.text(status).removeClass();
if (status == "PLAYING" || status == "ESTABLISHED" || status == "PUBLISHING") {
...
} else if (status == "FAILED") {
if (stream) {
if (stream.published()) {
switch(stream.getInfo()){
case STREAM_STATUS_INFO.STREAM_NAME_ALREADY_IN_USE:
$("#publishInfo").text("Server already has a publish stream with the same name, try using different one").attr("class", "text-muted");
break;
case ERROR_INFO.LOCAL_ERROR:
$("#publishInfo").text("Browser error detected: " + stream.getErrorInfo()).attr("class", "text-muted");
break;
default:
$("#publishInfo").text("Other: "+stream.getInfo()).attr("class", "text-muted");
break;
}
} else {
switch(stream.getInfo()){
case STREAM_STATUS_INFO.SESSION_DOES_NOT_EXIST:
$("#playInfo").text("Actual session does not exist").attr("class", "text-muted");
break;
case STREAM_STATUS_INFO.STOPPED_BY_PUBLISHER_STOP:
$("#playInfo").text("Related publisher stopped its stream or lost connection").attr("class", "text-muted");
break;
case STREAM_STATUS_INFO.SESSION_NOT_READY:
$("#playInfo").text("Session is not initialized or terminated on play ordinary stream").attr("class", "text-muted");
break;
case STREAM_STATUS_INFO.RTSP_STREAM_NOT_FOUND:
$("#playInfo").text("Rtsp stream not found where agent received '404-Not Found'").attr("class", "text-muted");
break;
case STREAM_STATUS_INFO.FAILED_TO_CONNECT_TO_RTSP_STREAM:
$("#playInfo").text("Failed to connect to rtsp stream").attr("class", "text-muted");
break;
case STREAM_STATUS_INFO.FILE_NOT_FOUND:
$("#playInfo").text("File does not exist, check filename").attr("class", "text-muted");
break;
case STREAM_STATUS_INFO.FILE_HAS_WRONG_FORMAT:
$("#playInfo").text("File has wrong format on play vod, this format is not supported").attr("class", "text-muted");
break;
default:
$("#playInfo").text("Other: "+stream.getInfo()).attr("class", "text-muted");
break;
}
}
}
statusField.attr("class", "text-danger");
}
}