Предварительная загрузка нескольких видео во Flash? Во флексе? - PullRequest
3 голосов
/ 18 декабря 2008

Я делаю проект, в котором мы воспроизводим несколько видео вплотную, и если мы загружаем их обычным способом, предоставляя URL-адрес потока, происходит задержка загрузки при каждом запуске следующего видео.

Я просмотрел документы Adobe для Flash и Flex и не могу найти способ предварительной загрузки видео. Встраивание их не работает в этом приложении. В идеале мы должны предварительно загружать их, отображать индикатор выполнения или другое короткое видео и запускать воспроизведение только после загрузки всех видео.

Я не привык задавать вопросы другим по программированию, у меня RTFM, но я нахожу, что в Adobe нет документации, и проблемы с флеш / флексом гуглить сложно. Там есть что просеять, и я не могу найти подходящую технику / решение.

Что касается Flex / Flash, меня интересует решение для одного или обоих. Возможно, это то же самое, что и ActionScript?

Ответы [ 2 ]

3 голосов
/ 19 декабря 2008

Это должно быть очень просто. Для прямой вспышки используйте fl.video. VideoPlayer или fl.video. FLVPlayback . Создайте несколько игроков, по одному на видео, вызывая load () для каждого с URL-адресом вашего исходного видео. Затем прослушайте события VideoProgressEvent.PROGRESS, чтобы узнать, когда видео загружается. Наконец, вы можете прикрепить видео последовательно к визуальному компоненту и вызвать play () для их воспроизведения.

Пример кода (не тестировался):

var video1:VideoPlayer = new VideoPlayer();
video1.load("http://example.com/video1.flv");
video.addEventListener(VideoProgressEvent.PROGRESS,
                       function(e:VideoProgressEvent):void
                       {
                         if (e.bytesLoaded == e.bytesTotal)
                         {
                           trace("video1 loaded.");
                           parent.addChild(video1);
                           video1.play();
                         }
                       }
var video2:VideoPlayer = new VideoPlayer();
video2.load("http://example.com/video1.flv");
video.addEventListener(VideoProgressEvent.PROGRESS,
                       function(e:VideoProgressEvent):void
                       {
                         if (e.bytesLoaded == e.bytesTotal)
                         {
                           trace("video2 loaded.");
                         }
                       }
3 голосов
/ 19 декабря 2008

Вы можете попробовать посмотреть проект bulk-loader и посмотреть, может ли он пригодиться для этого.

Выдержка из титульного листа:

"BulkLoader - это минимальная библиотека, написанная на ActionScript 3 (AS3), которая стремится сделать загрузку и управление сложные требования к погрузке легче и быстрее. BulkLoader занимает больше динамичная, менее тяжелая архитектура подход [так]. Немного импорта и тяжеловесов использование динамических возможностей AS3, BulkLoader имеет однострочное ощущение, что не мешает вам. "

...