Купи доменное имя для своего блога, персональной web-странички или нового интернет проекта по выгодным ценам. Зарегистрировать домен в зоне .РФ или .RU за 195 руб.

Делаем свой аналог YouTube за пол часа

В этом посте я расскажу о том, как за 30 минут на основе бесплатных инструментов сделать свой сервис по раздаче video flash контента.

Для этого нам потребуется

  • Утилиту mencoder из пакета mplayer для перекодирования. Можно использовать ffmpeg но mencoder/mplayer понимает больше входных форматов.
  • Утилиту flvtool2 - после получения flv файла нам необходимо добавить в него мета-информацию, для того чтобы flash-плееры могли реализовать перемотку видео.
  • Веб-сервер Nginx. Этот веб-сервер является легковесным решением в арсенале которого есть специальный модуль http_flv_module, который добавляет специальный заголовок в поток данных, позволяющий смотреть видео с любого места фильма.

Перекодируем фильмы

Ставим mplayer, позаботесь чтобы mplayer был собран с максимально большим количеством поддерживаемых форматов.

Каждый наш фильм необходимо перекодировать, я не буду расписывать возможности mencoder`а или ffmpeg`а, а сразу покажу пример команды:

mencoder The.Simpsons.18x05.avi \
  -o simpsons.flv -of lavf \
  -oac mp3lame -lameopts abr:br=56 -srate 22050 -ovc lavc \
  -ofps 25 \
  -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 \
  -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames \
  -vf scale=320:240

Немного ждём, я конвертировал 170 метров и минут 15-20 наверное прождал.

Дальше нам нужна утилита flvtool2. Она написана на Ruby так что убедитесь что у вас Ruby версии не ниже чем 1.8.4; если так, то вперёд, качаем flvtool2 gem-пакет и ставим

gem install flvtool2-1.0.6.gem

Далее обновляем мета-информацию в файле

flvtool2 -UP simpsons.flv

Настраиваем площадку

Ставим Nginx если его у вас ещё нет. Если вы компилируете nginx руками, не забывайте о модуле http_flv_module. Всё что нам надо поправить в конфиге nginx.conf:

    server {
        ...
        location ~ \.flv$ {
            flv;
        }
        ...
    }

Это, активирует flv модуль для файлов с расширением flv. Перегружаем nginx и последнее что нам осталось, это взять какой нибудь flash player например JW FLV Player. Качаем его и расспаковываем, нам нужны пару файлов, это — flvplayer.swf и swfobject.js; копируем их в наш проект. Дальше ещё одна интересная фенечка, это картинка предпросмотр, выдернем из фмльма один кадр, следующим образом:

mplayer -nosound -vo jpeg simpsons.flv -frames 1 -ss 120

Эта команда получит кадр от начала в 120 секунд и сохранить его в файл 00000001.jpg

Кадр есть, перекодированное видео тоже, создадим в нашем проекте файл movie.html в которым вставим следующий код:

<script type="text/javascript" src="swfobject.js"></script>

<p id="player1"><a href="http://www.macromedia.com/go/getflashplayer">Get the Flash Player</a> to see this player.</p>
<script type="text/javascript">
  var s1 = new SWFObject("flvplayer.swf","single","512","384","7");
  s1.addParam("allowfullscreen","true");
  s1.addVariable("file","simpsons.flv");
  s1.addVariable("image","00000001.jpg");
  s1.write("player1");
</script>

Вот и всё, открываем что то типа и смотрим видео, это конечно не YouTube, не всё сразу :-)

Регистрация доменов .РФ или RU за 195р!!!
Совместно с регистратором onreg.ru мы проводим акцию! Купи домен для своего блога или нового интернет проекта по выгодным ценам. Так домен в зоне .RU или .РФ стоит всего 195 рублей. При покупке нескольких доменов, возможны скидки. На onreg.ru есть система тикетов, через которую мы всегда готовы ответить на все ваши вопросы и предложения.
Комментарии
Оставить комментарий
Ваше имя:
E-mail:
Сайт (блог):
Сообщение:
Если вы не робот, введите код: