...
При перехвате ошибки, возникшей в локальном браузере, метод 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
stream.getInfo() code
| Code Block | ||||
|---|---|---|---|---|
| ||||
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");
}
} |