Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Универсальный Flash проигрыватель (http://www.flasher.ru/forum/showthread.php?t=117914)

Juggernaut 10.11.2008 17:58

Универсальный Flash проигрыватель
 
Сейчас работаю над проектом универсального flash проигрывателя

Предесловие: есть два независимых проекта

1. медиа проигрыватель JW Player for Flash ( http://code.jeroenwijering.com/trac/...er=date&desc=1 ) написаный на as3,

2. wowza альтернативный, платный сервер для организации поточного видео ( http://www.wowzamedia.com (десять подключений на шару, остальное за деньги)) as2, as3

ЗАДАЧА: Собрать некое детя фракинштейна универсальный проигрыватель как на smotri.com, тоесть где будет и возможность смотреть видео и возможность делать запись с веб камеры и просмотр поточного видео.

(К сожалению я обошел стороной изучение as3 и всегда работал с as2)

ПРОСЬБА: Я буду вести этот проект и постепенно заносить сюда свои достижения, а гениев и гуру flash прошу мне помочь советом. :)

etc 10.11.2008 20:05

Разделом ошиблись.

Juggernaut 12.11.2008 16:24

А в какой раздел мне тогда переместиться, где это было бы в тему?:)

etc 12.11.2008 18:24

Вакансии.

darksranger 12.11.2008 18:41

ну не обезательно, я думаю вопрос стоит в планости wowza

тогда, как вариант могу предложить red 5, справки хватает по нему, если поискать у нас на форуме, включая меня, уже поднимали на нем видео чат, так что я думаю при правильном подходе, после прочтения справок, топиков и т.д. и с грамотно поставленным вопросом, сулит вам рабочий проэкт :)

terbooter 14.11.2008 15:26

На JW Player тоже теперь коммерческую лицензию надо покупать.
Лично мне этот плеер не понравился.
Лучше сделать свой =)
Насчет сервера, тоже рекомендую посмотреть на рэд5

Juggernaut 18.12.2008 14:45

Дело в том что рэд5 даже не рассматривался... компания приобрела wowza и я сделал плеер... однако легкая неопытность сказалась и в плеере есть несколько серьезных глюков... например первый - все функции регулирующие положение элементов на экране и движимые элементы я вынес в Enter Frame что тут же сказалось на производительности плеера...) второй проблемой стала проблема необходимость динамической перекраски элементов через флешварс, но главное, видео ползунок ведет себя крайне неадекватно и не сразу реагирует на указанное ему положение, особенно в момент когда загружается видео и ползет полоса загрузки... короче секса пока больше чем хотелось бы... но так или иначе это уже работает...

Venya2007 19.12.2008 13:43

Juggernaut обращайтесь в личку! помогу:)

Juggernaut 19.12.2008 15:50

Ура... этот ужос наконец то заработал ... еще пока модифицирую но уже работает в двух режимах через вовзу и минуя ее через прямую ссылку на flv... увидеть шедевр флешестроения можно тут http://levelbox.ru/video/all/new/p1/...3589954741/pc1

Очень волную меня следующие глюки, которые пока не смог исправить:
1. При выходе в меню появляется таблица URL адресов. Каждая полоска с адресом реагирует на одно нажатие и выдиляется при помощи setSelection. однако вторая колонка с длиннючим адресом, выделяется только на половину, что это может быть?

Код AS3:

this.nmUrlLinc.addEventListener(MouseEvent.MOUSE_UP, tx1Ov);
this.nmNam.addEventListener(MouseEvent.MOUSE_UP, tx2Ov);
 
function tx1Ov(event:MouseEvent)
{
        nmUrlLinc.setSelection(0,nmNam.length)
}
function tx2Ov(event:MouseEvent)
{
 
        nmNam.setSelection(0,nmNam.length)
}

2. Чуть ли не самая большая головная боль у меня ползунок видео
Он попросту отказывается корректно работать (особенно вовремя загрузки видео)
Все это дерганье напрямую связанно с тем что вовремя обычной работы его положение контролируется одной функцией
Код AS3:

function setProgress(timecode:Number)
{
        //эталонная длинна ползунка
        var totalWidth:Number = _plBarRels.width;
      //время показа ролика (без преобразования в секунды)
      var newTimecode:Number = adjTimecode(timecode);
      // переводим последние 2 параметра в длинну линии прогресса
        var newWidth = (totalWidth * newTimecode)/duration;
 
        if (newWidth > totalWidth)
                newWidth = totalWidth;
 
        //передвигаем ползунок контроля соответственно фактическому месту проигрывания (при условии что мы не трогаем ползунок мышкой)
        if (!isScrubbing && isProgressUpdate)
        {
                _plBarProgres.width = newWidth;
        }
}

а при захвате ползунка мышкой, другой...

Код AS3:

var scrubTimer:Number = 0;
var isScrubbing:Boolean = false;
var scrubTime:Number = 0;
var scrubIsPlaying:Boolean;
var ScrBarFl:Boolean = false
//...................................
 
 
// Калькулирует позицию скролбара и малого дисплея при претаскивании мышью
function calcScrub()
{
        if(ScrBarFl)
        {
        var xpos:Number = _plBar.mouseX; //общее растягиваемый мувик скролбара содержащий в себе все элементы (который растягивается пропорционально длинне внутреннего мувика _plBarRels.width но при этом более правильно отображается mouseX тогда как в растянутом _plBarRels, mouseX остается неизменным
 
        var xmax:Number = _plBarBufer.width; //красная полоса отмечающая прогресс загрузки
 
                if (xpos >= 0 && xpos <= xmax)
                {
 
                  scrubTime = (duration*xpos)/xmax;
 
                        _plBarProgres.width = xpos; // невидимая полоса длинна котороей есть координата х для круглого ползунка
                }
        }
}
 
 
 
//Клик по скролбару
function startScrub(event:MouseEvent)
{
        ScrBarFl = true //даем разрешение на перемещение ползунка
 
        scrubTimer = setInterval(calcScrub, 0.1);
        isScrubbing = true;
        scrubTime = -1;
 
        calcScrub();
 
        scrubIsPlaying = isPlaying;
 
        if (isPlaying){nsPlay.pause()}
 
        //выводим малый дисплей времени
        scrto=true
}
 
 
 
 
// Отклик со скролбара
function stopScrub(event:MouseEvent)
{
 
        if (ScrBarFl)
        {
                ScrBarFl = false
                if (scrubTimer)
                        clearInterval(scrubTimer);
                scrubTimer = 0;
 
                if (scrubTime != -1)
                {
                        currFastDir = "play";
                        currFastIndex = 0;
                        //nsPlay.receiveAudio(true);
                        //isProgressUpdate = false;
                        if (scrubIsPlaying)
                        {
                                //isPlaying = true;
                                nsPlay.resume();
                                nsPlay.seek(scrubTime);
                        }
                        else
                        {
                                //isPlaying = false;
                                nsPlay.seek(scrubTime);
                        }
                        updateFFSpeed();
                }
 
                isScrubbing = false;
        }
        if (movieNameVars!=null){
                isProgressUpdate = true;
        }
 
        //убираем малый дисплей времени
        scrto=false
}

и как только я отпускаю мышку, то старые координаты и новые не совмещаются между собой...

если кто поймет в чем тут проблемма (если надо я дам более широкий код) то пишите ...

В понедельник я выделю и дам коды других блоков имеющих баги

Добавлено через 4 часа 46 минут
Следующая на очереди видеокамера... это скажу сразу... случай более легкий чем плеер... (в коде по короче будет) однако, те кто имеет опыт, прошу подсобить... (как и с плеером)... в замен буду делиться всем доступным мне опытом :)

Добавлено через 5 часов 8 минут
И (да не забанят меня админы за флуд) последний вопрос на пятницу... вопрос, ответ на который я пока не нашел... как при съмеке камерой, сделать снимок одного кадра средствами as3 (например через каждые десять минут) чтоб отображать его в списке транслируемых съемок (например как в www.smotri.com)


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

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