Я создаю видеочат во флэш-памяти, и все работает очень хорошо, за исключением части, в которой я пытаюсь определить, отправляет ли другой пользователь рабочий видеопоток.
Есть парапричины, по которым другой пользователь не отправляет видео.
- Другой пользователь не получил камеру
- Другой пользователь получил камеру, но камера в настоящее время занята другим приложением (Skype, Photo Booth, Google Talk и т. Д.)
- Другой пользователь получил камеру, но не разрешил использовать его / ее камеру.
- (Другие неожиданные проблемы, с которыми я столкнулся)угадайте ...)
Итак, как мне определить, является ли поток, который я получаю от другого пользователя, черным потоком (по вышеуказанным причинам) с использованием класса NetStream?
Самое близкое, что я придумал, - это добавление таймера, который опрашивает функцию currentFps () из потока, который я получаю от другого пользователя.Но пока это кажется довольно ненадежным, потому что я мог бы получить currentFps() == 0
и показать ошибку из-за этого, даже если в некоторых случаях я действительно получал видео из потока.Причина в том, что я опрашиваю API каждые 4 секунды для функции currentFPS и, скажем, в 00:00:04 я получаю «нет видео» согласно опросу, но в 00:00:05 видео включается, и поэтомуМне нужно подождать до следующего тика , пока сообщение об ошибке не исчезнет
Вот так выглядит мой текущий опрос
function subscribingStatusPoll(e:TimerEvent):void {
if (subscribingStream.currentFPS == 0){
error.text = "No video found from the other user..."
} else {
error.text = "";
}
}
Это единственный хак Я могу придумать, чтобы обнаружить это, но это ненадежно, и я на самом деле предпочел бы способ мгновенно определить, получил ли поток, который я получаю, рабочее видео, прикрепленное к нему, без этого уродливого опроса.