Готовим проект на Yii, в котором пользователи смогут, помимо всего прочего, размещать и просматривать небольшие материалы в формате MP4. Подсказали несколько вариантов решения относительно плеера, я решил остановиться на JW Player. Испытания он прошел успешно. Осталось быстренько написать соответствующее расширение для Yii.
Под катом пошагово что откуда куда скачать и листинг кода расширения с комментариями.
Сразу признаюсь что это мой первый опыт не только написания расширения под Yii, но и вообще работы с этим фреймворком.
И так. Сначала идем на longtailvideo.com и скачиваем JW Player. Распаковываем полученый архив. Оттуда нам нужны будут файлы: jwplayer.js, swfobject.js и player.swf. Создаем в дирректории с расширениями вашего Yii-проекта(т.е. в protected/extensions) дирректорию jwplayer(так будет называться наше расширение), в ней в свою очередь создаем дирректорию assets. В нее и размещаем 3 файла из архива(т.е. полный путь куда надо разместить jwplayer.js, swfobject.js и player.swf будет такой: protected/extensions/jwplayer/assets).
Теперь переходим непосредственно к созданию самого расширения. Создаем в дирректории protected/extensions/jwplayer файл JWplayer.php. В нем и будем описывать свой класс для нашего виджета.
Далее листинг кода этого файла с комментариями.
Все готово. Можно в представлении или в виде(это уж кому как нравится его называть) запускать наш видео-виджет, для этого достаточно будет вставить следующий код:
Вроде все. Спасибо за внимание.
Под катом пошагово что откуда куда скачать и листинг кода расширения с комментариями.
Сразу признаюсь что это мой первый опыт не только написания расширения под Yii, но и вообще работы с этим фреймворком.
И так. Сначала идем на longtailvideo.com и скачиваем JW Player. Распаковываем полученый архив. Оттуда нам нужны будут файлы: jwplayer.js, swfobject.js и player.swf. Создаем в дирректории с расширениями вашего Yii-проекта(т.е. в protected/extensions) дирректорию jwplayer(так будет называться наше расширение), в ней в свою очередь создаем дирректорию assets. В нее и размещаем 3 файла из архива(т.е. полный путь куда надо разместить jwplayer.js, swfobject.js и player.swf будет такой: protected/extensions/jwplayer/assets).
Теперь переходим непосредственно к созданию самого расширения. Создаем в дирректории protected/extensions/jwplayer файл JWplayer.php. В нем и будем описывать свой класс для нашего виджета.
Далее листинг кода этого файла с комментариями.
<?php /* * JWplayer widget class file. * JWplayer extends CWidget * @version 1.0 - 20110516 * @author skarah <skarah@mail.ru> * @copyright Copyright © 2011 skarah * @license New BSD License http://www.opensource.org/licenses/bsd-license.php */ class JWplayer extends CWidget { /** * Задаем массив опций виджета по-умолчанию. * * @var array */ public $_options = array( // ID плеера 'id' => 'playerID', // Ширина видео в пикселях 'width' => 480, // Высота видео в пикселях 'height' => 270, // Путь к файлу 'file' => '', // Путь к файлу флеш-плеера 'flashplayer' => '', ); /** * Массив для опций вижета options. * * @var array */ public $options = array(); /** * Публикуем наши assets. */ public function init() { $this->publishAssets(); } /** * Запускаем плеер с установленными опциями */ public function run() { /* * Получаем опции по умолчанию соответствующие ключам массива переменные */ extract($this->_options); /* * Получаем переданные опции */ extract($this->options); echo "<div id='mediaplayer'></div> <script type=\"text/javascript\"> jwplayer('mediaplayer').setup({ 'id': '{$id}', 'width': '{$width}', 'height': '{$height}', 'file': '{$file}', 'flashplayer': '{$flashplayer}', 'modes': [{type: 'flash', src: '{$flashplayer}'}] }); </script>"; } protected function publishAssets() { /* * Публикуем наши assets */ $assets = dirname(__FILE__) . '/assets'; $baseUrl = Yii::app()->assetManager->publish($assets); if (is_dir($assets)) { /* * Устанавливаем путь к файлу с флеш-плеером */ $this->_options['flashplayer'] = $baseUrl . '/player.swf'; /* * Регистрируем js скрипт плеера */ Yii::app()->clientScript->registerScriptFile($baseUrl . '/jwplayer.js', CClientScript::POS_HEAD); Yii::app()->clientScript->registerScriptFile($baseUrl . '/swfobject.js', CClientScript::POS_HEAD); } else { throw new Exception('Ошибка JWplayer: не могу найти папку assets для публикации.'); } } }
Все готово. Можно в представлении или в виде(это уж кому как нравится его называть) запускать наш видео-виджет, для этого достаточно будет вставить следующий код:
$this->widget('application.extensions.jwplayer.JWplayer', array( 'options' => array( 'file' => '/path_to/my_mp4file.mp4' ), ));
Вроде все. Спасибо за внимание.
