|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jan 2009
Сообщений: 7
|
Автоматическиреое проигрывание .flv видео в видеоплеере
Уважаемые - многим из Вас уже знаком этот скрипт. Это скрипт FLV плеера от DeCafe..
Прикрепляю к теме и сам плеер... /// Stream FLV-player by MureJlb. /// (c) DeCafe /// http://dcafe.ru /// Размер видео - 320 x 240 /// Чтобы изменить размер видео, нужно изменить размер видеоКлипа motion_vid, вложенного в motion_mc. // Если входящее видео отличается по размеру от окна видеоКлипа - оно будет подогнано без учета пропорций. var src:String = "decafe.flv"; //имя файла для подгрузки var flv_connect:NetConnection = new NetConnection(); flv_connect.connect(null); var motionStream:NetStream = new NetStream(flv_connect); var soundControll:Sound = new Sound(_level0); var duration:Number = 0; // длина ролика. ее мы будем получать по событию onMetaData var seeker:Number = null; // переменная для setInterval - для ускорения перемотки var timePressed:Number = 0; // таймер фиксирующий время нажатия клавиши перемотки var onTheRun:Boolean = false; // состояние плеера - проигрывается видео или нет //////////Чтобы проигрывать видео необходимо создать экземпляр типа Video (Делается это в библиотеке) motion_mc.motion_vid.attachVideo(motionStream); motionStream.setBufferTime(2); /// Указывает сколько секунд видео должно загрузиться чтобы началось воспроизведение. В процессе проигрывания, если первые 2 секунды уже проигрались, а вторая порция еще не подгрузилась происходит остановка, до тех пор пока не подгрузятся следубщие 2 секунды. motionStream.onMetaData = function(meta:Object):Void { duration = meta.duration; /*событие возникает, когда плеер связывается с видеоФайлом, и получает от него Мета_данные в виде объекта. Чтобы трассировать эти данные необходимо раскомментировать код.*/ //for (var prop in meta) { // trace(prop+" = "+meta[prop]); //} }; motionStream.onStatus = function(motion_status:Object):Void { //for(var prop in motion_status) { //trace(prop + ": "+motion_status[prop]); //}; //// Событие помогает отслеживать состояния воспроизведения - ошибки загрущки, остановку, начало, перемотку - читаем хелп, там все написано. Вот тут возможен момент - если готовить flv в Макромедиа Флеш8Видео энкодере - и подрезать там длину ролика - то это неблагоприятно сказывается на статусе СТОП. Вывод - не резать длину ролика в энкодере. if (motion_status.code == "NetStream.Play.Stop") { motionStream.seek(duration); motionStream.pause(true); play_btn._visible = true; pause_btn._visible = false; } }; ////// Обработчики кнопок play_btn.onRelease = function():Void { this._visible = false; pause_btn._visible = true; if (onTheRun) { if (vt_mc._width == 320) { motionStream.seek(0); } motionStream.pause(false); } else { onTheRun = true; motionStream.play(src); } }; pause_btn.onRelease = function():Void { this._visible = false; play_btn._visible = true; motionStream.pause(true); }; stop_btn.onRelease = function():Void { motionStream.seek(0); onTheRun = false; pause_btn._visible = false; play_btn._visible = true; motionStream.close(); motion_mc.motion_vid.clear(); }; rew_btn.onPress = function():Void { clearInterval(seeker); timePressed = 0; seeker = setInterval(changePos, 100, -2); }; fwd_btn.onPress = function():Void { clearInterval(seeker); timePressed = 1; seeker = setInterval(changePos, 50, 1); }; fwd_btn.onRelease = rew_btn.onRelease=function ():Void { clearInterval(seeker); timePressed = 1; }; //////////seek function changePos(dir:Number):Void { timePressed++; dir *= Math.ceil(timePressed/10); var dest:Number = motionStream.time+dir; if (dest<0) { dest = 0; } if (dest>duration) { dest = duration; } motionStream.seek(dest); } ///////////////// volume volumes.vd_mc.onPress = function():Void { this.startDrag(false, 7, 2, 45, 2); this.onMouseMove = changeVolume; }; volumes.vd_mc.onRelease = volumes.vd_mc.onReleaseOutside=function ():Void { this.stopDrag(); delete this.onMouseMove; }; function changeVolume():Void { var val:Number = Math.floor((this._x-7)*2.7); soundControll.setVolume(val); this._parent.vi_mc._x = this._x; updateAfterEvent(); } ////// инит графики vt_mc._width = 0; // vt - индикатор времени vl_mc._width = 0; // vl - индикатор загруженного контентая motion_mc.onEnterFrame = function():Void { var proc:Number = Math.floor(motionStream.bytesLoaded/motionStream.bytesTotal*320); vl_mc._width = proc<320 ? proc : 320; var timer:Number = Math.ceil(motionStream.time/duration*320); vt_mc._width = timer<320 ? timer : 320; }; //volumes._y = 256; volumes.vi_mc.setMask(volumes.vm_mc); pause_btn._visible = false; Уважаемые!! Подскажите пожалуйста какие изменение нужно внести в этот скрипт что бы проигрывание .flv видео начиналось автоматически, а не после нажатия кнопки плей, как это сейчас прописано! ОЧЕНЬ НУЖНО! Помогите! Своими скудными познаниями AS не осилил... |
|
|||||
Регистрация: Jul 2008
Сообщений: 46
|
Для конкретно этого примера можешь просто в самом конце добавить строчку
а вообще тыркаем ф1 и видим пример Последний раз редактировалось Flash_nooob; 27.03.2009 в 13:26. |
|
|||||
Регистрация: Jan 2009
Сообщений: 7
|
Flash_nood - большое спасибо!!
А как зациклить воспроизведение этого видеоролика - так что бы после окончания, воспроизведение начаиналось с начала?? |
|
|||||
Регистрация: Jul 2008
Сообщений: 46
|
повесить функцию сравнивающую duration и motionStream.time.. если >= motionStream.play(src);
|
|
|||||
Регистрация: Jan 2009
Сообщений: 7
|
СПАСИБО Flash_nooob разобрался!
А есть ли способ сделать так (в случае если мы не ставим play_btn.onRelease(); и не делаем авто проигрывание), чтобы плеер на старте не показывал белый экран а показывал первую картинку видео файла flv. - Как предзагружать сколько-то секунд видео, и останавливать проигрывание и загрузку на этом этапе. |
Часовой пояс GMT +4, время: 20:14. |
|
« Предыдущая тема | Следующая тема » |
Теги |
flv , flv player , видеоплеер |
|
|