PDA

Просмотр полной версии : Помогите с буферизацией


jazzbend
15.06.2011, 02:19
Здравствуйте.
Сразу извиняюсь если постил тему не в тот раздел.

Есть swf видео, сделанное в Camtasia Studio - flash - swf - ExpressShow

<div id="media" align=center>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="705" height="549" id="csSWF">
<param name="movie" value="presentation/presentation.swf" />
<param name="quality" value="best" />
<param name="bgcolor" value="#1a1a1a" />
<param name="allowfullscreen" value="true" />
<param name="scale" value="showall" />
<param name="allowscriptaccess" value="always" />
<param name="flashvars" value="autostart=false&color=0x1A1A1A,0x1A1A1A" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="presentation/presentation.swf" width="705" height="549">
<param name="quality" value="best" />
<param name="bgcolor" value="#1a1a1a" />
<param name="allowfullscreen" value="true" />
<param name="scale" value="showall" />
<param name="allowscriptaccess" value="always" />
<param name="flashvars" value="autostart=false&color=0x1A1A1A,0x1A1A1A" />
<!--<![endif]-->
<div id="noUpdate">
<p>The Camtasia Studio video content presented here requires a more recent version of the Adobe Flash Player. If you are you using a browser with JavaScript disabled please enable it now. Otherwise, please update your version of the free Flash Player by <a href="http://www.adobe.com/go/getflashplayer">downloading here</a>.</p>
</div>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
</div>

Нормально воспроизводится все, и на страничке в оффлайне, и при загрузке с сайта.
Но есть одно НО:
если смотреть онлайн, то оно не воспроизводится, пока не загрузится полностью. и эта загрузка начинается автоматически при открытии сайта.

помогите как сделать ровно наоборот:
чтоб начинало загружаться только после того как flash-элемент будет активирован, то есть по щелчку. и воспроизводиться начинало по мере загрузки, а не после полной.

и возможно ли такое вообще с данным swf видео?

нужны параметры буфферизации. пробовал autobuffering и buffertime. вставлял во flashvars
<param name="flashvars" value="autostart=false&color=0x1A1A1A,0x1A1A1A" />
делал отдельный <param name>
ничего не сработало.

читал где то что возможно это надо делать через параметр urlloader.

вообщем помогите пожалуйста советом или примером как это осуществить

jazzbend
19.06.2011, 11:16
что никто не знает какие параметры нужно добавить??

mooncar
19.06.2011, 21:23
Видимо, вам сможет ответить только тот, кто использовал "видео, сделанное в Camtasia Studio - flash - swf - ExpressShow", а таких, скорее всего, не очень много, тут в основном люди работают в Adobe Flash, FD или других полноценных средах разработки.

Между тем:
1. "Активация по щелчку" - это навязанная браузеростроителями чушь.
Размещайте на странице вашу флешку с помощью SWFObject (http://designformasters.info/posts/flash-embed-with-swfobject-2/), который поможет это устранить.
2. Сделайте начало воспроизведения по клику мышью на соответственной кнопке навигации, если у вас там это возможно. Вообще решайте все средствами флеша. Если вам нужно воспроизведение видео в потоковом режиме, пишите работу c потоком на ActionScript. А так у вас всегда будет загружаться вся флешка, если в ней не предусмотрен поток. То есть разберитесь в вашей технологии - предусмотрено ли там потоковое воспроизведение видео.

"читал где то что возможно это надо делать через параметр urlloader."

У Adobe нет такого параметра (<param name="...">), Adobe этого не предусматривает для "Flash OBJECT and EMBED tag attributes" (http://kb2.adobe.com/cps/127/tn_12701.html).
То есть "делал отдельный <param name>" - это мимо кассы.
Другое дело, если в этом "ExpressShow" есть такие переменные, которые можно задать с помощью параметра flashvars, то поищите и почитайте документацию к этой технологии.

jazzbend
20.06.2011, 19:22
вообще у мя флешка и размещена с помощью SWFObject
<script type="text/javascript" src="presentation/swfobject.js"></script>
<script type="text/javascript">
swfobject.registerObject("csSWF", "9.0.28", "presentation/expressinstall.swf");
</script>
это в head

все как описано в ссылке по SWFObject

вот только не могу разобраться с переменными.. кстати из нужных пожалуй только одна указана, но ее недостаточно.
и как определить поддерживает ли поток моя флешка?
все точно так же как в ссылке.

mooncar
20.06.2011, 19:46
Так вы документацию читали, искали по свойствам, которые предоставляет Camtasia Studio для своих роликов?

jazzbend
20.06.2011, 20:50
в этой программе не было параметров автозагрузки и буфферизации. только паузы перед началом проигрывания

mooncar
20.06.2011, 22:26
Вам нужно потоковое воспроизведение видео. Если видеоролик зашит в SWF-ку, значит это исключается и ни о какой буферизации речи идти не может.
Пишите все сами, самый простой вариант - вытащите в Adobe Flashe готовый компонет FLVPlayback - там есть настройки и времени буферизации, и автоплея, и скины разные.

jazzbend
20.06.2011, 22:59
но flv по сравнению с swf весит в разы больше! при том же качестве
поэтому и выбрал swf
кстати потоковое видео идет в моей swf. флешку можно просматривать через несколько секунд после начала загрузки при нажатии плей. и потом она продолжается грузиться одновременно с воспроизведением. но получается это в mozzilla firefox, IE и chrome, кроме opera. остальные не проверял. не знаю почему в opera не так..

меня единственное напрягает что флешка всегда начинает грузиться при открытии сайта. даже без нажатия плей. а потоковое воспроизведение есть. кроме opera(

mooncar
20.06.2011, 23:17
кстати потоковое видео идет в моей swf. флешку можно просматривать через несколько секунд после начала загрузки при нажатии плей. и потом она продолжается грузиться одновременно с воспроизведением. но получается это в mozzilla firefox, IE и chrome, кроме opera. остальные не проверял. не знаю почему в opera не так..

Это нельзя назвать "потоковым видео". Просто, если в первом кадре не стоит стоп, то флешка начинает проигрываться не дожидаясь окончания загрузки. А у вас видео внедрено во флешку и происходит ее стандартное воспроизведение плеером по уже подгруженным к данному моменту кадрам.
Потоковое видео - это, если не вдаваться в подробности, несколько другое. Нужно использовать класс NetStream, если пишите плеер с нуля, или использовать готовые компоненты, один из которых я вам привел выше. (Хотя и это тоже будет называться только "прогрессивной загрузкой", для использования всех возможностей потокового вещания нужен специализированный сервер (типа FMS)).

Кроме того, FLV и SWF в данном контексте - равнозначные вещи. Можно положить FLV- файл отдельно от флешки и воспроизводить его потоком, а можно внедрить видео во флеш, и это тоже будет то же самое FLV, и неважно, из какого контейнера вы внедряли - из avi, mov.. Т.е. архитектура представления данных и сами данные будет те же.

но flv по сравнению с swf весит в разы больше!
Ровно наоборот:
Embedding video content directly into the Flash Pro SWF file significantly increases the size of published file, and is only suitable for small video files...
Вес зависит только от настроек импорта видео (плотность ключевых кадров, kbps, аудионастройки...). Если они были одинаковы - то вес SWF с внедренным небольшим видео и вес FLV-шки будет почти одинаковым (некоторый вес контейнера swf-ки со служебной инфой и некоторые особенности, связанные с плотностью ключевых кадров видео в swf-контейнере). Как видим из цитаты, это справедливо для небольших по объему видеороликов.
Данный факт легко проверить, импортировав видео в пустой проект в Adobe Flash и просто создав FLV с помощью того же адобовского энкодера.