На стороне клиента Flash, как я могу определить, когда сервер намеренно закрывает соединение TCP со своим видеопотоком? Когда это произойдет, мне нужно будет принять меры - возможно, попытаться перезапустить видео или отобразить сообщение об ошибке. В настоящее время закрытие соединения и медленное соединение выглядят одинаково для меня. Объект NetStream
запускает событие NetStream.Play.Stop
в обоих случаях. Когда соединение медленное, оно обычно восстанавливается само в течение нескольких секунд. Я хочу действовать только тогда, когда соединение закрыто, а не когда оно медленное.
Вот как выглядит моя общая установка. Это базовая NetConnection
-> NetStream
-> Video
настройка.
this.vidConnection = new NetConnection();
this.vidConnection.addEventListener(AsyncErrorEvent.ASYNC_ERROR, this.connectionAsyncError);
this.vidConnection.addEventListener(IOErrorEvent.IO_ERROR, this.connectionIoError);
this.vidConnection.addEventListener(NetStatusEvent.NET_STATUS, this.connectionNetStatus);
this.vidConnection.connect(null);
this.vidStream = new NetStream(this.vidConnection);
this.vidStream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, this.streamAsyncError);
this.vidStream.addEventListener(IOErrorEvent.IO_ERROR, this.streamIoError);
this.vidStream.addEventListener(NetStatusEvent.NET_STATUS, this.streamNetStatus);
this.vid.attachNetStream(this.vidStream);
Ни одно из событий ошибки не срабатывает, когда сервер закрывает TCP или когда соединение зависает. Возникает только событие NetStream.Play.Stop
. Вот след того, что происходит от первоначального воспроизведения видео до закрытия TCP-соединения.
connection net status = NetConnection.Connect.Success
playStream(http://192.168.0.44/flv/4d29104a9aefa)
NetStream.Play.Start
NetStream.Buffer.Flush
NetStream.Buffer.Full
NetStream.Buffer.Empty
checkDimensions 0 0
onMetaData
NetStream.Buffer.Full
NetStream.Buffer.Flush
checkDimensions 960 544
NetStream.Buffer.Empty
NetStream.Buffer.Flush
NetStream.Play.Stop
Когда я делаю дамп для различных свойств во время закрытия соединения и медленного соединения, я не вижу отличительных значений, которые могли бы помочь мне различить закрытие и медлительность.
NetConnection->connected = true
NetConnection->connectedProxyType = none
NetConnection->proxyType = none
NetConnection->uri = null
NetConnection->usingTLS = false
VidStream->bufferLength = 0
VidStream->bufferTime = 0.1
VidStream->bytesLoaded = 3204116
VidStream->bytesTotal = 3204116
VidStream->currentFPS = 0
VidStream->time = 63.797