Этот короткий пост о том, как при помощи
набора бесплатных инструментов
реализовать полнофункциональный потоковый
видео сервер, основанный на flash video. Итак, что
же мы хотим получить после окончания
настройки сервера? Все очень просто - мы
хотим получить бесплатный функциональный
аналог решения по стримингу видео,
реализованного в Flash
Communication Server (Flash Media Server)
компании Macromedia. 

Первым нашим шагом, как и при
использовании любой другой технологии
потоковой передачи видео, будет
конвертация видео файлов в
специализированный формат,
предназначенный для передачи по сети в виде
потока (этот формат называется “Flash Video” (flv))
и добавление в него специализированной
мета-информации, предназначенной для
плееров, которые реализуют “перемотку”
видео потока до нужного вам места в видео
файле. В интернете есть множество статей,
авторы которых смело заявляют “просто
запустите ffmpeg и все будет отлично”, но я
вынужден не согласиться с ними. Ffmpeg - это не
подходящий инструмент для поставленной
задачи, т.к. он поддерживает очень маленькое
количество входных форматов видео-файлов, а
мы не хотим организовывать двухэтапное
перекодирование видео через промежуточных
формат, понятный ffmpeg. Именно поэтому мой
выбор - это бесплатное ПО со скромным именем
mplayer,
содержащее в себе утилиту mencoder,
предназначенную для перекодирования видео-файлов
из одного формата в другой и понимающей
огромное количество входных форматов.

В первую очередь тебе нужно будет скачать
пакет исходных кодов для mplayer с официального
сайта mplayer
и скомпилировать их. Я не буду
описывать здесь, как это сделать, т.к.
существует море статей, рассказывающий об
этом, но хочу привлечь твое внимание к
простому факту: постарайся минимизировать
набор выключенных кодеков на этапе
компиляции установив все требующиеся
библиотеки из репозитория твоего
дистрибутива или собери их самостоятельно,
т.к. чем больше кодеков у тебя будет, тем
больше форматов видео файлов ты сможешь
обрабатывать.

После установки mplayer/mencoder тебе будет нужно
установить интерпретатор языка
Ruby
чтобы запустить ПО flvtool2. Пожалуйста,
убедись, что у тебя стоит версия Ruby не ниже
1.8.4.

Следующим шагом будет инсталляция flvtool2 -
небольшой утилиты, позволяющей вставлять
meta-информацию в видео-файлы и позволяющую
использовать “перемотку” видео потока во
flash плеерах. Исходные тексты можно получить
на домашней
странице проекта
, но я хочу посоветовать
тебе использовать последнюю версию flvtool2 из
SVN-репозитория (процесс описан на домашней
странице проекта).

Небольшое замечание: текущая версия flvtool2
содержит маленькую, но очень неприятную
ошибку, не дающую использовать данное ПО с
файлами, сгенерированными mencoder’ом. Когда
ты запустишь flvtool2, ты получишь следующий
результат:

/usr/local/lib/site_ruby/1.8/flv/amf_string_buffer.rb:163:
[BUG] Segmentation fault

Для решения этой проблемы откройте файл lib/flv/amf_string_buffer.rb
в исходных текстах flvtool2 и измените строку 163
с

write [(time.to_i * 1000.0)].pack('G')

на

write [(time.to_f * 1000.0)].pack('G')

Хочу сказать ОГРОМНОЕ СПАСИБО Дмитрию
Штефлюку
за это исправление.

Итак, сейчас вы готовы к конвертации ваших
видео файлов из любого формата в формат flv.
Вы можете сделать это, используя следующий
набор команд:

$ mencoder \
orig_file.ext \
-ofps 25 \
-o dest_file.flv \
-of lavf \
-oac mp3lame \
-lameopts abr:br=64 \
-srate 22050 \
-ovc lavc \
-lavfopts i_certify_that_my_video_stream_does_not_use_b_frames \
-lavcopts vcodec=flv:keyint=50:vbitrate=300:mbd=2:mv0:trell:\
v4mv:cbp:last_pred=3 -vop scale=320:240
....
....
$ flvtool2 -UP dest_file.flv
...

Эти команды конвертируют файл orig_file.ext в
dest_file.flv и добавляют meta информацию в него.

Последнее, что вам нужно будет сделать -
это скачать Lighttpd
web server
с его официального сайта и
установить его . После этого, включите
стриминг-модуль
в config-файле и вы сможете использовать
любой flash
player
, понимающий идею стриминга видео для
создания вашего собственного сервиса Youtube и
зарабатывания вашего первого миллиарда
долларов. 🙂 А для того, чтобы отблагодарить
автора статьи, поддержите
ее на digg.com
.

Оригинал:

http://blog.kovyrin.net/2006/10/08/lighttpd-memcoder-flvtool-for-streaming/

 

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии