В настоящее время я работаю над веб-плеером Flash с функцией переключения разрешения. Я пытаюсь использовать функцию play2 ()
класса NetStream в ActionScript.
Проблема, с которой я столкнулся, заключается в том, что видео не меняются быстро. Для тех, кто знаком с функцией play2 ()
, я считаю, что проигрыватель выполняет «стандартный переключатель»
, а не «быстрый переключатель».
В документации говорится что , когда параметр смещения равен -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;
}
}
}