Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   прелоадер для flv видео (http://www.flasher.ru/forum/showthread.php?t=104446)

B0Bka 26.11.2007 00:03

прелоадер для flv видео
 
в хелпе есть такой пример прелоадера видео:

Код:

Example
The following example creates a progress bar using the Drawing API and the bytesLoaded and bytesTotal properties that displays the loading progress of video1.flv into the video object instance called my_video. A text field called loaded_txt is dynamically created to display information about the loading progress as well.

var connection_nc:NetConnection = new NetConnection();
connection_nc.connect(null);
var stream_ns:NetStream = new NetStream(connection_nc);
my_video.attachVideo(stream_ns);
stream_ns.play("video1.flv");

this.createTextField("loaded_txt", this.getNextHighestDepth(), 10, 10, 160, 22);
this.createEmptyMovieClip("progressBar_mc", this.getNextHighestDepth());
progressBar_mc.createEmptyMovieClip("bar_mc", progressBar_mc.getNextHighestDepth());
with (progressBar_mc.bar_mc) {
    beginFill(0xFF0000);
    moveTo(0, 0);
    lineTo(100, 0);
    lineTo(100, 10);
    lineTo(0, 10);
    lineTo(0, 0);
    endFill();
    _xscale = 0;
}
progressBar_mc.createEmptyMovieClip("stroke_mc", progressBar_mc.getNextHighestDepth());
with (progressBar_mc.stroke_mc) {
    lineStyle(0, 0x000000);
    moveTo(0, 0);
    lineTo(100, 0);
    lineTo(100, 10);
    lineTo(0, 10);
    lineTo(0, 0);
}

var loaded_interval:Number = setInterval(checkBytesLoaded, 500, stream_ns);
function checkBytesLoaded(my_ns:NetStream) {
    var pctLoaded:Number = Math.round(my_ns.bytesLoaded/my_ns.bytesTotal*100);
    loaded_txt.text = Math.round(my_ns.bytesLoaded/1000)+" of "+Math.round(my_ns.bytesTotal/1000)+" KB loaded ("+pctLoaded+"%)";
    progressBar_mc.bar_mc._xscale = pctLoaded;
    if (pctLoaded>=100) {
    clearInterval(loaded_interval);
    }
}


B0Bka 27.11.2007 12:04

как все же заставить видео сначала скачаться а потом воспроизвестись... даже если оно стримовое, в приведенном примере, видео все равно скачивает какой-то объем и воспроизводит его (не дождавшись конца загрузки).

alekslitvinenk 27.11.2007 15:43

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

Код:

var duration:Number;

stream_ns.onMetaData = function(myMeta){
        trace(myMeta['duration']);
        duration = Number(myMeta['duration']);
        stream_ns.setBufferTime(duration);
};


B0Bka 29.11.2007 01:56

alekslitvinenk ага, была такая идея, только не знал как получить длительность до воспроизведения файла, думал пока я получу duration файл уже начнет проигрывать и я не успею выставить значение setBufferTime для потока, спасибо за этот код, попробую

B0Bka 30.11.2007 00:58

да, все работает замечательно, спасибо...

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

alekslitvinenk 30.11.2007 01:52

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

B0Bka 30.11.2007 02:01

наверно можно какими-нибудь программами или фаерволами но я не знаю таких (если что-то есть такое подскажи)
з.ы. программно кэш не сбрасывается? (чтобы его сразу при запуске флэшки отчищать)

alekslitvinenk 30.11.2007 02:08

Неуверен, что кеш автоматически очищаеться, поэтому лучше каждый раз вручную чистить...А почему собственно SimulateDownload не подходит ?

B0Bka 30.11.2007 03:17

Цитата:

Сообщение от alekslitvinenk
...А почему собственно SimulateDownload не подходит ?

первый раз при компиляции (crtl+enter) все ок, но т.к. файл локально, он быстро загружается и начинает воспроизводиться, а когда нажимаешь второй раз ctrl+enter == SimulateDownload, то он его уже не грузит, т.е. он эмулирует загрузку самой флэшки - плеера, а вот видео у него уже в кэше и он его сразу воспроизводит. (по крайней мере у меня такое впечатление возникает)


Часовой пояс GMT +4, время: 14:40.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.