Я закончил, используя часть предложения Чарли-боя , адаптировав MediaStream.as
для проверки каждые 100 мс, если свойство time
NetStream
одинаково (оно застряло в конце ... иливозможно просто застрял, но моя конкретная ситуация сделает это маловероятным).
Я добавил три свойства в MediaStream
:
private var last_time:Number = -1;
private var last_check:int = 0;
private const check_delay:int = 100;
и изменил функцию compareTime
следующим образом:
private function compareTime():void
{
if (isNaN(duration))
{
// when there is no metadata duration
if (getTimer() - last_check > check_delay)
{
// enough time has passed since last check
if (last_time==this.time)
{
timer.stop();
timer.removeEventListener(TimerEvent.TIMER, onTimer);
dispatchEvent(new StreamEvent(StreamEvent.COMPLETE, null));
}
else
{
last_check = getTimer();
last_time = this.time;
}
}
}
else if(!isNaN(duration) && this.time >= duration)
{
timer.removeEventListener(TimerEvent.TIMER, onTimer);
dispatchEvent(new StreamEvent(StreamEvent.COMPLETE, null));
}
}
Наихудший сценарий - «застрявшая рамка» на 100 мс перед загрузкой следующего клипа.Не так плохо для моей конкретной потребности.
Спасибо всем за вклад.