Поиск

Потоковая обработка видео во Flash

Начнем с рассмотрения некоторых способов, позволяющих удостовериться, насколько эффективно наш фильм будет передаваться пользователям, а затем поговорим о том, каким образом Flash управляет видеоклипами и монтажными столами. Вооружившись этими знаниями, мы, при помощи нескольких простых кнопок и ActionScript создадим несколько видеоэффектов.

Во Flash потоковая передача информации несколько отличается от традиционной – серверной. Потоковые серверы аккуратно выдают пакеты информации, когда они требуются проигрывателю. При нормальном ходе этого процесса пользователь должен подождать, пока происходит буферизация, а затем начинается воспроизведение всего фильма целиком. Потоковые серверы достаточно «умны», чтобы рассчитать полосу
пропускания пользователя и предоставить тот или иной вариант материала, подходящего размера.
Во Flash такое тоже возможно, но это не так-то просто – видео поток во Flash основан на принципах, схожих с реальной потоковой передачей, но без всякого «интеллекта». Flash попросту загружает все подряд, согласно последовательности, и воспроизводит все, что загружено. В результате мы нередко имеем воспроизведение рывками, из-за того, что Flash ожидает загрузки очередной порции материала. Мы обсудим, как можно этого избежать, но сначала давайте познакомимся поближе с проблемой «рваного» воспроизведения.

Потоковая передача без буферизации

Потоковая передача видео во Flash реализуется на монтажном столе root (главном). Для реализации потоковой передачи в любой форме вы должны поместить ваше видео непосредственно на главном монтажном столе, а не в клипе.
В данном примере нашей целью будет потоковая передача со скоростью 56k.
1.   Найдите короткий видеоролик (продолжительность моего – шесть секунд) и выясните частоту кадров. Если хотите использовать тот же самый файл, что и я, скачайте streaming.flaс сайта friends of ED.
2.   Откройте новый фильм Flash и установите такую же частоту кадров, как в предназначенном для импорта видеоролике.
3.   Выполните команду Файл > Импорт в библиотеку (File > Import to Library).
4.   В появившемся диалоговом окне выберите опцию Вставить видео в документ Macromedia Flash (Embed video in Macromedia Flash document).
5.  Установите параметры импорта в зависимости от детализации и подвижности изображения в вашем ролике. Я установил параметры, которые вы видите на снимке, исходя из следующих соображений:
•    качество (Quality): здесь нет особой детализации;
•    интервал ключевого кадра (Keyframeinterval): подвижность умеренная;
•    масштаб (Scale): оригинал слишком велик для модема 56k;
•   соотношение кадров: мне совсем не обязательно оставлять все кадры;
•    импорт аудио (Importaudio): в моем клипе нет звука.
В конечном итоге у меня получился фильм размером 85 килобайт – из 22,2 мегабайтного несжатого DV-фильма QuickTime. Такой результат достигнут, главным образом, благодаря пропуску каждого второго кадра, компрессии, а также уменьшению размера изображения.
Если вы использовали другой клип, постарайтесь добиться примерно такого же размера файла – около 100 КВ. Не импортируйте звук вместе с клипом – он нам сейчас не нужен, а размер файла увеличил бы очень заметно. К тому же, может проявиться раздражающий эффект «тиканья».
Напоминаю, что вы можете пере-импортировать клип или просто посмотреть его параметры, дважды щелкнув на клипе в Библиотеке (Library):
6.   Получив клип подходящего размера, перетащите его копию из Библиотеки (Library) в сцену (stage). Разрешите Flash растянуть монтажный стол до длительности клипа.
7.   Протестируйте фильм с помощью команды Управление > Проверить фильм (Control > Test Movie) или Ctrl + Enter. Видео должно проигрываться быстро и гладко, без задержек – Flash загружает данные достаточно быстро, пока не идет речь о симулировании потоковой передачи.
8.   Flash имеет несколько предустановленных значений ширины полосы пропускания, кроме того, вы можете создать новый набор параметров сами, с нуля. Находясь в режиме проверки фильма, выберите в меню Отладка (Debug) пункт 56К (4,7 КБ/с). Мы сейчас симулируем загрузку вашего фильма через модем 56К со средней скоростью (4,7 КБ в секунду).
9.  Теперь выберите команду Вид > Профили полосы (View > Bandwidth Profiler). Откроется окно, а в нем – нечто, напоминающее очертания города на горизонте. На самом деле, здесь отображен размер отдельных кадров и другая полезная информация о вашем фильме.
Прежде, чем рассматривать профили полосы в деталях, давайте сделаем то, что собирались – запустим наш поток.
10. Выполните Вид > Показать поток (View > Show Streaming) – этой командой будет запущена симуляция загрузки нашего Flash-фильма модемом 56К. Как только вы это сделаете, вы увидите на диаграмме кадров растущую зеленую полосу.
Эта полоса показывает, сколько материала уже загружено. Маленькая стрелочка над кадрами – индикатор воспроизведения (представьте магнитофонную головку).
Посмотрите, как воспроизводится фильм – он стал прерывистым, «рваным». Содержание воспроизводится по мере загрузки, и Flash, воспроизведя очередную порцию, останавливается. В результате мы получаем такой вот фильм – старт-стоп-старт-стоп, совсем не этого мы хотели!
Сохраните свой фильм под именем streaming.fla. Намнадо будет улучшить процесс загрузки и воспроизведения при помощи буферизации.