• Страница 1 из 1
  • 1
Форум » Adobe Flash » Уроки flash » Урок: онлайн видео плеер, с плейлистом из XML, Actionscript
Урок: онлайн видео плеер, с плейлистом из XML, Actionscript
КузяДата: Понедельник, 30.11.2009, 16:06 | Сообщение # 1
Рядовой
Группа: Администратор
Сообщений: 4
Награды: 0
Репутация: 0
Статус: Offline
Цель моего уроки - создание простого и уникального видео плеера для сайта.
Идея: видео плеер для сайта, который будет воспроизводить видео из папки, куда закачивают видео пользователи.
Реализация: Flash + PhP + Mysql, во флеш используем компонент MediaDisplay

Для начала создадим кнопки... именно кнопки

Кнопку паузы и кнопку плея разместим друг над другом. Теперь зададим нашим кнопка Instanse имена.
Плей - b_play
Пауза - b_pause
Предыдущее видео - b_prev
Стоп - b_stop
Следующее видео - b_next

Теперь нам нужны контролеры звука, я сделал их 4. Максимум звука, Минимум звука, и два средненьких, вы же можете сделать их хоть 100.

Так же зададим им инстанс имена.
Для самого маленького контролера - b_vol_min
Для того что повыше - b_vol_cet1
Еще выше - b_vol_cet2
И для самого высокого - b_vol_max

С кнопками разобрались (кстате на забыли перед назначением имен все символы сделать кнопками???)

Теперь мы строим два бара, 1ый - показывает прогресс загрузки видео, 2ой - прогресс просмотра видео.
Рисуем прямоугольник

Конвертируем его в муви клип.
Теперь наша задача создать анимацию в 100 кадров.
Копируем полоску на второй слой, меняем её цвет, к примеру на #0072bc; Линию на втором слое перемещаем так, что бы она была впритык к первой, в моем случае это выглядит так:

Идем на 100ый кадр и на всех слоях создаем новый кадр, а линию со второго слоя перемещаем на _x = 0; _y = 0;
Создаем Третий кадр, копируем туда линию с первого кадра, размещаем на _x = 0; _y = 0; И делаем этот слой маской для второго слоя.

На первом кадре любого или даже нового слоя, в Actionscript пишем

Code
stop();

Идем обратно на сцену и данному муви клипу даем инстанс наме = p_bar (прогресс бар)
Копируем наш прогресс бар, меняем инстанс наме на = p_bar_2
Редактируем наш прогресс бар:
Удаляем первый слой, а цвет линии второго слоя меняем, ну к примеру на розовый. На сцене надо наши прогресс бары разместить друг над другом.
Создаем новые слой на сцене, делаем его самым нижним, на него разместим наш компонент MediaDisplay, инстанс наме = player. Ширину и высоту видео окна делаем на максимум. Слой с видео окном закрываем для редактирования.
Создаем динамический текст на сцене, инстанс наме = video_info;
Разместим все наши элементы на сцене.

Приступим к программированию
Весь код мы будем писать в первом кадре нового слоя или слоя со всем кнопками.

Code
//Для начала создадим все нужные нам переменные
var video_num; //переменная для контроля видео
var array_length; //общее кол-во видео
var video_progress; //прогресс видео
var var_id = new Array(); //Массивы для данных
var var_name = new Array();
var var_url = new Array();
var myXML:XML = new XML(); //Объект XML

Создаем все переменные, а так же массивы и объект XML

Code
b_pause._visible = false; //Скрываем паузу

Скрываем кнопку - паузу, так как наш плеер не начинает воспроизведение самостоятельно.

Code
myXML.load("video.xml"); //Загружаем XML

Загружаем нащ XML, о том как строить XML - ниже

Code
myXML.onLoad = function(success) { //После загрузки
if (success) { //Если загрузка успешна
  xmlNode = this.firstChild; //Открываем первый тег ХМЛ
  for (var i=0; i<myXML.firstChild.childNodes.length; i++) { //Цикл создания массивов
   var_id[i] = xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue;
   var_name[i] = xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue;
   var_url[i] = xmlNode.childNodes[i].childNodes[2].firstChild.nodeValue;
   var_data[i] = xmlNode.childNodes[i].childNodes[3].firstChild.nodeValue;
  }
  array_length = var_id.length;
  video_num = 0;
  video_info.text = "Ожидает: "+var_name[video_num];
}  
else {
  trace("Не могу загрузить xml файл");
}
};

Тут мы вводим все данные в массивы

Code
b_play.onRelease = function() { //Действие для кнопки - плей
if (video_progress == null) { //Если до этого мы не нажали паузу, то
  this._visible = false;
  b_pause._visible = true;
  player.contentPath = "http://friend-list.ru/flash/uploads/video/"+var_url[video_num]; //Заставляем плеер играть видео, адресс в массыве которого равен video_num
  video_info.text = "Играет: "+var_name[video_num]; //Текст в видео инфо
}
else { //Если пауза была нажата
  player.play(video_progress);
  this._visible = false;
  b_pause._visible = true;
  video_info.text = "Играет: "+var_name[video_num];//Текст в видео инфо
}
}
b_pause.onRelease = function() { //Действие для кнопки - пауза
video_progress = player.playheadTime; //Запоминаем где мы остановились
player.stop(); //Прекращаем воспроизведение
this._visible = false;
b_play._visible = true;
video_info.text = "Пауза: "+var_name[video_num]; //Текст в видео инфо
}
b_stop.onRelease = function() {
player.stop(); //Прекращаем воспроизведение
b_play._visible = true;
b_pause._visible = false;
video_progress = 0.001; //Обнуляем значение паузы, с 0.001 избегаем баг нула
}
b_next.onRelease = function() { //Действие для кнопки - следующее видео
if (array_length - 1 > video_num) { //Если у нас еще не последнее видео
     b_play._visible = false;
  b_pause._visible = true;
  video_progress = null; //Обнуляем значение паузы
  video_num++; //Значение видео делаем больше
  video_info.text = "Ожидает: "+var_name[video_num]; //Текст в видео инфо
  player.contentPath = "http://friend-list.ru/flash/uploads/video/"+var_url[video_num];
  player.play();
}
}
b_prev.onRelease = function() { //Действие для кнопки - предыдущее видео
if(video_num != 0) { //Если у нас не первое видео
  b_play._visible = false;
  b_pause._visible = true;
  video_progress = null; //Обнуляем значение паузы  
  video_num--;
  video_info.text = "Ожидает: "+var_name[video_num]; //Текст в видео инфо
  player.contentPath = "http://friend-list.ru/flash/uploads/video/"+var_url[video_num];
  player.play();
}
}
b_vol_max.onRelease = function() { //Действия для кнопки - звук на максимум
player.volume = 100;
}
b_vol_cet1.onRelease = function() { //Действие для кнопки - среднее значение звука 2
player.volume = 40;
}
b_vol_cet2.onRelease = function() { //Действие для кнопки - среднее значение звука 1
player.volume = 60;
}
b_vol_min.onRelease = function() { //Действия для кнопки - звук на минимум
player.volume = 10;
}
p_bar.onRelease = function() { //Действия для перемотки видео
this.onePixOnOneSec = player.totalTime / this._width; //определяем значение 1пх. прогресс бара, на N сек. видео
this.goTo = Math.round(this.onePixOnOneSec * this._xmouse); //Определяем значение N сек. видео, равное участку куда кликнул пользователь
player.pause(); //Видео на паузу
player.play(this.goTo); //Воспроизводим видео с места определенного мат. вычислениями
}

Коды для кнопок.
Немного про стоп и паузу.
В кнопке стоп мы сделали паузу на 0.001 секунде.. почему же так а не null. Делаем так, потому что если обнулять паузу, то видео просто не играело.
Пауза - да да, в компоненте видео можно сделать player.pause();... но с файлами avi у меня этот фокус не прокатил.

Code
setInterval(function() { //Выполняем функцию раз в определеннео время
       var loaded = Math.round(player.bytesLoaded / player.bytesTotal * 100);
       var progres = Math.round(player.playheadTime / player.totalTime * 100);
       p_bar.gotoAndStop(loaded);
       p_bar_2.gotoAndStop(progres);
       if (progres == 100) { //Если выдео закончилось, пробуем перейти на след. видео
        if (array_length - 1 > video_num) {
         video_num++;
         player.contentPath = "http://friend-list.ru/flash/uploads/video/"+var_url[video_num];
         player.stop(); //Прекращаем воспроизведение, так как мы ждем действий от пользователя
        }
        b_pause._visible = false;
        b_play._visible = true;
        video_progress = 0.001; //Обнуляем значение паузы
        video_info.text = "Ожидает: "+var_name[video_num]; //Текст в видео инфо
       }
       }, 100);

Код для динамического изменения прогресс баров...

Вид XML документа:

Code
<?xml varsion="1.0" encoding="utf-8"?>
<video>
<vid>
<id>1</id>
<name>1.flv</name>
<url>1_video_123456.flv</url>
</vid>
<vid>
<id>2</id>
<name>2.flv</name>
<url>2_video_123456.flv</url>
</vid>
</video>

Вот и все.
Автор: я, вроде бы мой первый урок по флеш
P.S. У меня плеер воспроизводит не только flv, но и avi
P.P.S. в коде я везде указывал путь к своему хосту, где лежат видео, вам собственно указывать, как надо вам, и совсем забыл, по мере улучшения возможностей плеера буду обновлять темку

Часть 2. PHP + MySQL = Xml + Flash

И так, продолжаем урок. Для начала создаем MySQL Базу данных (БД). Я использую PhPMyAdmin для создания и работы с бд. Тут кому как удобно, разница не велика. Называем нашу бд video, кол-во полей делаем равным 3.
id - тип integet(int, целочисленное), макс. кол-во символов, к примеру 3, в параметрах указываем auto_increment(аi, автозаполнение), и делаем поле ключем.
url - тип text(текст).
name - тип text(текст).
С БД - все.
Теперь файл - создающий наш XML док.

Code
<?php
mysql_connect("адрес к бд", "логин", "пароль"); //Создаем соединение с сервером MySQL
mysql_select_db("имя бд"); //Выбираем БД
mysql_query("SET NAMES utf8"); //Изменяем кодировку получаемых данных на utf-8, у вас это может быть любая другая, к примеру windows-1251
$query = mysql_query("SELECT * FROM video ORDER BY `video`.`id` DESC"); //Получаем все данные из таблицы видео, с условием выбора - с последнего
$check = mysql_fetch_array($query); //Заносим все данные в массив
echo '<?xml varsion="1.0" encoding="utf-8"?><video>'; //Первая строчка нашего XML
do { //Цикл
echo '<vid><id>'.$check['id'].'</id><name>'.$check['name'].'</name><url>'.$check['url'].'</url></vid>';
}
while ($check = mysql_fetch_array($query)); //Условие, если действует, то цикл повторим
echo '</video>'; //Закрываем начальный тег
?>

Далее нам надо создать скрипт который будет закачивать файлы на сервер, я сделал первую стадию загрузки с помощью flash... не изобретаем велосипед, идем сюда ->

Из урока берем, только то что связано с флешем.
Теперь файл к которому будет обращаться флеш.

Code
<?php
mysql_connect("адрес к бд", "логин", "пароль"); //Создаем соединение с сервером MySQL
mysql_select_db("имя бд"); //Выбираем БД
mysql_query("SET NAMES utf8"); //Изменяем кодировку получаемых данных на utf-8, у вас это может быть любая другая, к примеру windows-1251
$query = mysql_query("SELECT * FROM video"); //Получаем все данные из видео
$num_rows = mysql_num_rows($query); //Определяем кол-во строк в таблице
$num_pict = $num_rows + 1; //+1 к тому значение
$rand_name = $num_pict.'_video_'.rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9); //Создаем новое имя для файла
$format_name = substr(basename($_FILES['Filedata']['name']), -3); //Определяем разреширение
$pict_name = $rand_name.'.'.$format_name; //до конца доводим имя
if ($_FILES['Filedata']['name']) {
$upload_dir = "../uploads/video/"; //Папка куда переместим файл
$upload_file = $upload_dir.$pict_name; //Создаем полный путь
move_uploaded_file($_FILES['Filedata']['tmp_name'], $upload_file); //Перемещаем
$query = mysql_query("INSERT INTO video (name, url) VALUES ('".basename($_FILES['Filedata']['name'])."', '".$pict_name."')"); //Заносим все значения в БД
}
?>

прикрепление: video.rar ( 166.26к )

 
artem300Дата: Вторник, 04.01.2011, 20:57 | Сообщение # 2
Рядовой
Группа: Пользователь
Сообщений: 3
Награды: 0
Репутация: 0
Статус: Offline
Продаю приватный кейлоггер,клавиатурный шпион(в пакет входит билдер)
Работает на любой верси Windows (так же и на x64 платформах)
Отправка логов идет на SMTP почту,буфер обмена захватывается.
Не блочится стандартным фаерволлом!(брэндмауэром)
Не детектируется антивирусами!

----------------------------
Мои темы на других ресурсах:
http://www.hackzone.ru/forum/open/id/15717/

https://hacker-pro.net/showthread.php?t=21603
<span style="color:blue">
Связь со мной:
Web: http://petr-kamensky.narod2.ru/
ICQ: 366557449
vkontakte: http://vkontakte.ru/club22845462
email: kuban@smtp.ru
</span>

 
Фан-БойДата: Четверг, 13.01.2011, 00:33 | Сообщение # 3
Рядовой
Группа: Пользователь
Сообщений: 3
Награды: 0
Репутация: 0
Статус: Offline
взлом почты, востановление пароля от почты.
условия и цены на сайте

http://email-zakaz.com

пригодиться,просто добавь в закладки.

Code

Взлом мыла на заказ,взломаю почтовый ящик, взлом e-mail, взлом почты, взломать пароль к почте, как взломать почтовый ящик, помогите взломать почтовый ящик, взломать почту, взломать email, получить пароль от почты, как узнать пароль к электронной почте,Взлом мыла на заказ ,взломаю почтовый ящик, взлом e-mail, взлом почты,  
взломать пароль к почте, как взломать почтовый ящик, помогите взломать почтовый ящик,взломать почту,  
взломать email, получить пароль от почты, как узнать пароль к электронной почте, взлом почты на заказ,взлом почты, взлом mail, взломать почту, как взломать почту, взломать пароль, взломать ящик, взлом почтовых ящиков,  
взлом mail.ru, взломать mail.ru, hack e-mail, как взломать mail, как взломать пароль, как узнать пароль, взломать почтовый ящик, пароль взломать, взлом мыла, взлом e-mail, взлом электронной почты, открыть почтовый ящик, взломать e-mail, взломать почту mail, взлом паролей, взломать знакомства, взлом сайтов, взломать сайт, взлом паролей почты яндекс,  
рамблер,взлом, заказ
 
Форум » Adobe Flash » Уроки flash » Урок: онлайн видео плеер, с плейлистом из XML, Actionscript
  • Страница 1 из 1
  • 1
Поиск: