Использование Ajax для создания медиа-ресурсов (исходники)Источник: IBM developerWorks Россия Джэк Хэррингтон
Если спросить людей с улицы о том, какой сайт лучше всего олицетворяет новое поколение Web-приложений, то большинство из них ответят, что это YouTube. Этот сайт не только стал использовать новую технологию для привлечения пользователей, но также изменил сам принцип просмотра медиаинформации и наше к ней отношение. Наиболее интересные вещи иногда появляются на YouTube раньше, чем их можно будет посмотреть с помощью традиционных источников медиаинформации, а если этого не происходит, YouTube все равно превращается в один большой цифровой видеомагнитофон для всего мира. Совместный доступ к медиа-информации изменяет мир, и при этом технологически реализовать его не так сложно. В этой статье я покажу, как применить Ajax на стороне клиента для создания Web-приложения, выполняющего функции простого видеохостинга. Простой выбор видеороликаНачнём с создания Web-сайта, содержащего список видеороликов, с помощью которого можно выбрать один из них для просмотра - сайта, который при смене просматриваемого ролика не потребует перезагрузки всей страницы. В листинге 1 приведён код такой страницы.
Когда данные получены, с помощью метода Использование тега В этом несложном примере movies.xml - это просто плоский файл (т.е. файл, состоящий из однородных записей), содержащий ссылки на короткие видеоролики, снятые мной. Он приведён в листинге 2.
Если открыть страницу в браузере, то можно увидеть что-то вроде рисунка 1. Рисунок 1. Простая страница со списком видеороликов Вверху страницы проигрывается ролик с помощью тега Очевидно, эта система не очень хорошо приспособлена для создания больших видеоархивов, и необходимо реализовать какой-то поиск по списку видеороликов. Список видеороликов с поискомЧтобы сделать возможным поиск по списку, необходимо добавить немного кода. Усовершенствованный скрипт приведен в листинге 3. Здесь мы также добавили поле ввода для поиска (тег Листинг 3. Добавление возможности поиска
К событию, возникающему при отпускании кнопки клавиатуры, здесь привязан запуск метода Конечно, запуск функции Листинг 4 содержит изменённый код скрипта search.php.
В начале скрипта мы создаём массив, содержащий все видеоролики. В целях простоты примера данные здесь жёстко прописаны. В реальности эти элементы скорее всего будут извлекаться из базы данных, содержащей списки видео файлов. Далее к каждому заголовку ролика из списка применяется регулярное выражение поискового запроса, и если оно подходит, то выводится тег Если теперь открыть страницу и ввести букву Рисунок 2. Страница, на которой можно искать видеоролики, и простой запрос А если нажать Delete и ввести " Рисунок 3. Поиск видеоролика с заголовком, содержащим слово water Хотя основная цель этой статьи - показать, как можно создать клиентскую часть приложения, используя динамический HTML (DHTML) и Ajax, существует ещё много вещей, которые нужно знать, чтобы создать сайт с совместно используемыми видеоданными. Основы работы с совместно используемыми видеоданнымиПереходя на несколько минут от практики к некоторым теоретическим вопросам, позвольте мне рассказать о некоторых более сложных аспектах работы с совместно используемыми видеоданными. Рассмотрим три основных вопроса:
Хранение видеоданных является довольно сложной задачей - особенно для небольших приложений. Видеофайлы имеют большой объём, и поэтому для их хранения требуется дорогое аппаратное обеспечение. Дополнительные расходы связаны с необходимостью обеспечения широкополосного канала для предоставления пользователям доступа к этим данным. Вы могли бы купить своё собственное оборудование и использовать его для организации такого хостинга. Можно также воспользоваться каким-нибудь сервисом наподобие S3 от Amazon, который позволяет закачивать на сервер любые данные (резервные базы данных, изображения, видеоролики, и т.п.) и транслировать их из вычислительного центра Amazon за разумную цену. Вероятно, было бы полезным изучить какой-нибудь из этих сервисов, прежде чем начинать финансирование собственного вычислительного центра. Следующий вопрос - видеоформаты - представляет собой интересную и достаточно сложную задачу. Существует множество видеоформатов, и не все проигрыватели могут работать со всеми форматами. На самом деле большинство проигрывателей обрабатывают только один предпочитаемый ими формат. Пожалуй здесь самым лучшим решением, позволяющим облегчить пользователю процесс закачки файлов, является выбор какого-то одного конкретного формата и последующее преобразование всех входящих видеофайлов в этот формат. Есть очень удобное средство для выполнения этих операций - это программа FFmpeg , работающая из командной строки. С помощью неё можно не только конвертировать форматы, но и извлекать отдельные кадры из видеороликов и таким образом создавать небольшие картинки для предварительного просмотра (thumbnail’ы). Вопрос выбора определённого формата может быть довольно сложным. В настоящее время бесспорным лидером здесь является Flash-видео, однако постепенно набирает популярность и Windows Media®-формат, особенно с выходом релиза Microsoft Silverlight (ранее известного как WPF/Everywhere). FFmpeg может преобразовывать практически любые типы видеороликов в формат Flash-видео. Существуют также несколько бесплатных Flash-проигрывателей с открытыми исходными кодами, которые можно легко встроить в свой сайт. Комбинируя эти проигрыватели со скриптами, рассмотренными выше, можно создать комплексное решение для ресурса совместно используемых видеоданных с применением технологии Ajax на стороне клиента. Но видео - это не единственное, чем живёт Сеть: предоставление общего доступа к картинкам также является важным аспектом развития Web. СлайдшоуВ листинге 5 приведён код простого слайдшоу на DHTML, получающий данные из XML-файла.
Код построен на JavaScript-библиотеке Prototype.js. Для получения списка изображений, которые требуется показать, здесь также используется объект Ajax.Request . Возвращённые в результате такого запроса XML-данные подвергаются далее синтаксическому разбору для извлечения URL каждого изображения, а также его ширины, высоты и заголовка. Функция showSlide() осуществляет собственно показ слайда. Таймер запускает её каждые 5 секунд для смены картинки.
Слайд отображается с помощью одного тега В листинге 6 показано содержимое файла данных об изображениях.
Здесь данные также жёстко прописаны, но их можно легко сгенерировать и с помощью PHP-скрипта. Слайдшоу в действии показано на рисунке 4. Примечение: ранее я публиковал значительно более хитрую реализацию слайдшоу. Этот пример отличается тем, что здесь используется библиотека Prototype.js и смена слайда осуществляется гораздо проще. ЗаключениеСайты, подобные Flikr и YouTube, являются лишь верхушкой тех потенциальных возможностей, которыми обладают медиа-данные в Web. В этой статье были описаны несколько простых способов показа видео и изображений, и вы можете использовать их в своих проектах. Если эти приёмы у вас работают, пожалуйста, дайте мне знать об этом - присоединяйтесь к обсуждению на форуме Ajax на developerWorks и расскажите о своих результатах. |