mega.genn.org

available in English, too!

FLV-video preloader (Flash, AS2, working solution, howto) 3 комментария

Preloading .flv

Однажды утром, когда я дорисовывал логотипы для одних милых ребят, меня поприветствовал Геллер. Его надо было спасать. Каждый может попасть в такую ситуацию: заканчивается кислород в баллоне, а до ближайшего телепорта восемь парсеков, любимая девушка угнала машину с полным багажником кокаина или необходим простенький флеш-ролик. Удивительно, но Артему как раз не хватало ролика с проигрыванием видео. Ничего особенного: первый кадр, по клику на который начинается загрузка видео, а после загрузки оно показывается от начала до конца и останавливается на первом кадре. Если вновь нажать на первый кадр, то видео покажется сначала. Ничего особенного, если не учитывать предзагрузки .flv.

Как добиться загрузки .flv

Когда я написал кусок со всякими NetStream’ами, в голову пришла идея, что все уже сделано до нас. Пятнадцать секунд общения с поисковыми способностями гугла подтвердили мое предположение: ребята из Bloommedia уже придумали «How to preload FLV video in flash with actionscript 2.0». К сожалению, как это отражено и в комментариях к их посту, пример не рабочий: при первом просмотре видео все равно дергается и толку от прелоадера мало. К счастью, все поправимо, и сделать это довольно легко! Ниже пример работы прелоадера и исправленный исходный код, который не только нормально выполняет функции прелоадера, но и позволяет начинать загрузку по клику на видео.


Пример работы flv-прелоадера (размер загружаемого файла 2,6 Мбайта)

Не буду перегружать страницу полным исходным кодом, ведь его можно скачать (.fla, 304 Кбайта). Остановлюсь лишь на существенном отличии от кода Bloommedia.

  1. // после того, как состоялась загрузка
  2. mns.seek(0); // перематываем на начало
  3. // mns.play("dom-kelly.flv"); — так включается проигрывание у Bloommedia. Это неправильно и лишь начинает загрузку заново (ничего не кешируется в большинстве случаев)
  4. 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).



Комментарии и трекбеки

8.06.09•20:28 кирилл

Спасибо, попробую заюзать

28.06.09•00:31 Илья

Не открывается fla в Macromedia Flash 8. Пишет неверный формат.
—-
Can`t open in Macromedia Flash 8 Portable. Not supported format.

28.06.09•12:09 Genn

Илья, предлагаю скачать все 84 Кбайта сохраненные для позапрошлой версии флеша ;)

Оставить комментарий

имя и адрес электронной почты — необходимые поля

Комментировать

Свежие твитты

Другие сайты и сети