- Конвертирование видео в flash формат (FLV), ипользуя VP6 кодек
- Обновление метаинформации видеофайла
- Создание thumbnails из видео
- Дальнейшии манипуляции с БД
1. Обработка метаинформации
- После того как мы получили заветный flash ролик, надо обновить его метаинформацию, а конкретно ключевые позиции. Это необходимо для поддежки режима просмотра — streaming. Т.е «прыгать» по длине видео без загрузки всего файла. Софт который этим занимается обычно именуют Metadata Injector. Для линукса я пробовал:
- FlvTool2 — http://rubyforge.org/projects/flvtool2/
- Yamdi — http://yamdi.sourceforge.net/
Yamdi — приложение, написанное на C. Оригинальное название Yet Another Meta Data Injector. Работает очень шутро. Результат его работы представляет собой новый файл, что наиболее удобно, т.к исходник сразу можно удалить или перенести на длительное хранение. Так же позволяет вставлять ивент onLastSecond
Вместо flvtool2 можно использовать flvtool++
http://mirror.facebook.com/facebook/flvtool++/
Оба приложения могут генерить XML файл с перечнем всех параметров, что дальше ипользуется при обновлении информации видео в БД.
Свой выбор я остановил на Yamdi, как наиболее быстром.2. Создание thumbnails
- Итак, получили готовый FLV файл, XML c метаинформацие. Дальше для этого видео необходимо создать прерью 320x240 (картинка, которая отображается в плеере до того как юзер нажмет старт, пример можно посмотреть на RuTube), несколько мелких превьющек 120x96. В этой области тоже немного утилит.
1. FFmpeg — http://ffmpeg.mplayerhq.hu/
Базовая программа для работы с видео. Я использовал только для конвертирования видео, для остального — не очень подходит, т.к не дает возможности сгенерить все изображения ( с произольными временными точками ) за раз. Точнее там эта функция несколько ограниченная.
2. PHP Extension — http://ffmpeg-php.sourceforge.net/://http://ffmpeg-
Модуль для php который позволяет напрямую работать с flash файлом. Умеет собирать превью в GIF файл, иногда бывает нужным. Единственное, работает медленно по сравнению с другими утилитами. Плюс — удобный API, если в проекте используется PHP.
3. FFMpegThumbnailer — http://code.google.com/p/ffmpegthumbnailer/
Написана на С++ и работает очень быстро. Изначально автор создавал ее для декстоп менеджеров. С недавнего времени обзавелась кучей полезных фич, типо видео фильтров. Возможно использовать в своих C++ программах. Поддерживает 2 выходных формата (jpg/png), выбранную точку можно задавать с помощью абсолютного времени (hh:mm:ss) или в виде процента. Работает со всеми форматами отлично, но бывают сбои на специфичных файлах (mp4). Вообщем, идеально подходит для задачи.
- Первое время мы использовали JWPlayer 4 (без модификации) то столкнулись с проблемой. На серверах работал nginx 0.6.32, который, как выяснилось, не работал с этим плеером. Проблема заключалась в том, что новая версия плеера добавляля в строку запроса файла прочую информацию, вроде этой:
myvideo.flv?start=2659763&width=280&client=FLASH%20MAC%209,0,124,0&version=4.0%20$Rev:%2030%20
Решилось все очень просто, патчем для веб-сервера (текстовый файл патчинга): www.ruby-forum.com/attachment/2307/patch.flvFLV Player source (информацию для запуска видео берет с XML страниц): http://www.longtailvideo.com/players/jw-flv-player/
Взято тут: http://habrahabr.ru/blogs/open_source/45289/ и дополнено.
Спустя 2 месяца, 3 дня, 18 часов, 52 минуты, 29 секунд (9.06.2009 - 13:33) Сергей написал(а):
Спасибо за Yamdi ))
Спустя 7 месяцев, 22 дня, 6 часов, 42 минуты, 6 секунд (31.01.2010 - 21:15) ИНСИ написал(а):
PandoraBox2007 супер статья!!!