
Однажды утром, когда я дорисовывал логотипы для одних милых ребят, меня поприветствовал Геллер. Его надо было спасать. Каждый может попасть в такую ситуацию: заканчивается кислород в баллоне, а до ближайшего телепорта восемь парсеков, любимая девушка угнала машину с полным багажником кокаина или необходим простенький флеш-ролик. Удивительно, но Артему как раз не хватало ролика с проигрыванием видео. Ничего особенного: первый кадр, по клику на который начинается загрузка видео, а после загрузки оно показывается от начала до конца и останавливается на первом кадре. Если вновь нажать на первый кадр, то видео покажется сначала. Ничего особенного, если не учитывать предзагрузки .flv.
Как добиться загрузки .flv
Когда я написал кусок со всякими NetStream’ами, в голову пришла идея, что все уже сделано до нас. Пятнадцать секунд общения с поисковыми способностями гугла подтвердили мое предположение: ребята из Bloommedia уже придумали «How to preload FLV video in flash with actionscript 2.0». К сожалению, как это отражено и в комментариях к их посту, пример не рабочий: при первом просмотре видео все равно дергается и толку от прелоадера мало. К счастью, все поправимо, и сделать это довольно легко! Ниже пример работы прелоадера и исправленный исходный код, который не только нормально выполняет функции прелоадера, но и позволяет начинать загрузку по клику на видео.
Пример работы flv-прелоадера (размер загружаемого файла 2,6 Мбайта)
Не буду перегружать страницу полным исходным кодом, ведь его можно скачать (.fla, 304 Кбайта). Остановлюсь лишь на существенном отличии от кода Bloommedia.
// после того, как состоялась загрузкаmns.seek(0); // перематываем на начало// mns.play("dom-kelly.flv"); — так включается проигрывание у Bloommedia. Это неправильно и лишь начинает загрузку заново (ничего не кешируется в большинстве случаев)mns.pause(); // снимает с паузы и начинает проигрывание загруженного ролика (кешируется всегда!)
Итак, если использовать метод NetStream pause(), а не play(), то пользователь не будет обречен наблюдать рывки загружаемого видео. У него все покажется хорошо.
Briefly in English
Just in case any wonderer visited this page in order to make working flv-video preloader, I’ll repeat the main statements.
I found almost working example from Bloommedia. The problem was it didn’t cache the video. To solve it I just replaced play() method after video is loaded with pause() method. Unfixed version worked like this: loaded the whole movie, scrolled to the begining of it, then told NetStream to start loading it again (and playing while loading) in hope, that video was cached. Now it works the next way: after loading the whole movie player scrolls to the begining and starts playing it. Looks brilliant, right? ;)
You can download source of flv-video preloader (.fla, 304 Kbytes).
Tweet


Спасибо, попробую заюзать
Не открывается fla в Macromedia Flash 8. Пишет неверный формат.
—-
Can`t open in Macromedia Flash 8 Portable. Not supported format.
Илья, предлагаю скачать все 84 Кбайта сохраненные для позапрошлой версии флеша ;)