В настоящее время я работаю над веб-плеером Flash с функциями переключения разрешения. Я пытаюсь использовать функцию NetStream класса play2() в ActionScript.
Проблема, с которой я сталкиваюсь, заключается в том, что видео не меняется быстро. Для тех, кто знаком с функцией play2(), я считаю, что игрок выполняет "standard switch", а не "fast switch."
В документации указано, что, когда параметр offset равен -1, происходит быстрое переключение. Что на самом деле происходит, но как только событие "NetStream.Play.Transition" получено, игрок ждет, пока не будет достигнуто время, обозначенное знаком ns.time + ns.bufferLength, перед выполнением переключения.
Я думал, что быстрое переключение очистило буфер, но при проверке на ns.backbufferlength я обнаружил, что все еще кэшировано. Также он упоминает: "Когда смещение -1, коммутатор происходит на первом доступном ключевом кадре после netstream.time + 3", поэтому я запутался.
Любая помощь/понимание по этому вопросу будет высоко оценена.
Вот фрагмент кода, описывающий, что происходит (newStream() вызывается, когда пользователь нажимает, чтобы перейти к новому разрешению, стилю youtube):
public function newStream(address:String):void
{
var opts:NetStreamPlayOptions = new NetStreamPlayOptions();
opts.streamName = address;
opts.transition = NetStreamPlayTransitions.SWITCH;
opts.offset = -1;
ns.play2(opts);
}
private function nsCallback(event:NetStatusEvent)
{
switch(event.info.code)
{
case "NetStream.Play.Transition":
{
trace("Current time (on Transition): " +
ns.time, "Buffer: " + ns.bufferLength);
var estTime:Number = ns.time + ns.bufferLength;
trace("Estimated Completion Time: " + estTime);
break;
}
}
}