Просмотр полной версии : SWF streaming
Dubinsky
04.08.2008, 13:48
Здравствуйте,
У меня возник вопрос, даже не знаю как его спросить у GOOGLE. Есть видео, запакованное в SWF. Возможно ли его загрузить в другом SWF и проиграть в потоке, не дожидаясь полной загрузки мувика? Намекните хотя бы, реально ли это, как это должно происходить и с какими проблемами можно при этом столкнутся.
Заранее спасибо.
> Возможно ли его загрузить в другом SWF?
Да.
> и проиграть в потоке, не дожидаясь полной загрузки мувика?
Нет. Пока swf файл не загружен, никакие данные из него не доступны, кроме лежащих в загруженных фреймах главной timeline.
Dubinsky
04.08.2008, 14:32
Странно, но ведь в любом проекте есть т.н. прелоадер, который на первом кадре работает даже тогда, когда остальной файл еще не доступен... Или там по-другому подгружается мувик?
Странно, но ведь в любом проекте есть т.н. прелоадер, который на первом кадре работает даже тогда, когда остальной файл еще не доступен... Или там по-другому подгружается мувик?
Но этот первый кадр тоже необходимо загрузить.
Обычно его делают "легким", он быстро загружается и отображает процесс загрузки остального "тяжелого" содержимого файла.
К тому же далеко не в каждом проекте такой прелоадер.
Но если у Вас видео лежит в главном timeline можно этот файл использовать как обычный flv.
mre: не правда. Только это называется не стриминг а буферизация. SWF по определению формат, который можно буферизировать, как только кадр загрузился - его можно проиграть. На самом деле это даже проиcxодит автоматически. Т.е. если вы будете загружать клип, в котором много кадров, то он и будет проигрываться по мере загрузки, а не после того, как последний кадр загрузится.
wvxvw, спасибо что разъяснили.
BlooDHounD
05.08.2008, 11:51
wvxvw, не правда. так как ты описал работает только таймлайн. все остальные пока не загрузятся польностью не проиграются.
BloodHound:
А ты попробуй =) Я наоборот, долго мучался, не мог придумать, как избавится от того, чтобы загружаемый ролик в котором есть несколько кадров не проигрывался до полной загрузки. Т.е. пришлось в Event.PROGRESS все время его отсылать на первый кадр.
На мой взгляд главный timeline вообще лучше не использовать.
А анимации пусть лежат в библиотеке.
BlooDHounD
05.08.2008, 14:05
wvxvw, а чё пробывать? если мувик не лежит на таймлайне, то пок он целиком не загрузится, таймлайн не перейдёт на этот кадр.
Мувик, который находится в кадре на таймлайне является его частью? - помоему ответ очевиден, да. если этот мувик не загрузился, следовательно, кадр в котором он находится тоже не загрузился.
Если эмбед видео будет лежать на основном таймлайне - то и проигрываться будет по мере загрузки, а если оно будет лежать в библиотеке и аттачится от туда, то, ессно, пока все не загрузится - ничего играть не будет.
BlooDHounD
05.08.2008, 16:15
wvxvw, эх ... во первых с видео отдельная песня. а мувиками можешь сам попробывать. возьми мувик в 2 кадра и положи на таймлайн в 2 кадра. как не странно, но уже в первом кадре таймлайна у тебя будут загружены оба кадра мувика :)
Так млин, если ты положишь мувик в первый кадр, то он весь и будет в первом кадре, какая разница сколько в нем самом кадров?
BlooDHounD
05.08.2008, 23:59
wvxvw, ты кажется мне пытался доказать, что мувики во флэше в потоке грузятся? или я слепой?
Только это называется не стриминг а буферизация. SWF по определению формат, который можно буферизировать, как только кадр загрузился - его можно проиграть. На самом деле это даже проиcxодит автоматически. Т.е. если вы будете загружать клип, в котором много кадров, то он и будет проигрываться по мере загрузки, а не после того, как последний кадр загрузится.
Выделил красным цветом. Pечь изначально шла о том, как загружается SWF файл и включеное в него видео. Помоему мой ответ вполне точно и достоверно описывает то, как это происходит. Если есть сомнения - есть bandwidth profiler во Флеше, включаем имитацию загрузки и смотрим что и когда загружается, и что когда начинает проигрываться.
BlooDHounD
06.08.2008, 10:18
wvxvw, гыТ.е. если вы будете загружать клип, в котором много кадров, то он и будет проигрываться по мере загрузки, а не после того, как последний кадр загрузится.красным надо всё предложение выделять? про видео и близко речи нету. и чуть позже:А ты попробуй =) Я наоборот, долго мучался, не мог придумать, как избавится от того, чтобы загружаемый ролик в котором есть несколько кадров не проигрывался до полной загрузки. Т.е. пришлось в Event.PROGRESS все время его отсылать на первый кадр.а теперь внимание вопрос: что же есть мувик? это такая сборная солянка, которая во флэше обозначает всё что угодно? или, может, в связи с тем, что в АС2 был метод loadMovie, который грузил джепеги, мне надо картинки начать называть мувиками?
Ну и где ты там увидел "мувик"? Написано "ролик", ролик, это !== MovieClip, это весь файл, а не какая-то его часть.
BlooDHounD
06.08.2008, 14:37
ну допустим. а в первой цитате, слово "клип", что обозначает?
Оп-па, оказалось, совсем не банальный вопрос =) Я вот до последнего был уверен, что это вполне легитимное русское слово, обозначающее отрезок видео/анимации. А словари говорят, что это либо чайка, либо руки (или какой-то древний инструмент типа совка, которым можно было "загребать" =)
Dubinsky
07.08.2008, 18:07
Да, видео в SWF грузится замечательно и в потоке, гори оно синем пламенем это FLV, теперь только SWF embedded video. Но не могли бы вы мне подсказать как отследить что Видео в данный момент не играется а буфферизируется? Какие события приходят при остановке видео для буфферизации и какое событие на дальнейшее проигрывание? Ну чтобы красиво все выглядело, отдельную тему делать уже не хочется ради такой то мелочи...
framesLoaded property
framesLoaded:int [read-only]
Language Version : ActionScript 3.0
Player Version : Flash Player 9
The number of frames that are loaded from a streaming SWF file. You can use the frameLoaded property to determine whether the contents of a specific frame and all the frames before it loaded and are available locally in the browser. You can also use it to monitor the downloading of large SWF files. For example, you might want to display a message to users indicating that the SWF file is loading until a specified frame in the SWF file finishes loading.
If the movie clip contains multiple scenes, the framesLoaded property returns the number of frames loaded for all scenes in the movie clip.
Implementation
public function get framesLoaded():int только так...
Dubinsky
11.08.2008, 17:35
Пробовал этот проперти - не работает. Он все время выдает как будт окадры уже загружены (в SWF c embedded video). Мне даже пришлось лоадер высчитывать по байтам (bytesLoaded, bytesTotal). Неужели никакое событие не приходит клипу, если его стрим дошел до ручки и он ждет наполнения буфера?
не знаю, у меня работает...
terbooter
12.08.2008, 15:22
Отписался в вашей первой теме про загрузку видео (http://www.flasher.ru/forum/showthread.php?t=114648)
Я думаю, все-таки лучше нормально сконвертировать в FLV.
Потому что так делают все. FFmpeg пробовали?
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.