Страницы

среда, 26 декабря 2012 г.

Трансляция видео при помощи ErlyVide....Ан нет...Nginx

      К чему этот пост!? Одним из передовых проектов на Erlang, который сча у всех на слуху это ErlyVideo( есть еще всякие Riak, которые пока не знакомы широкой общественности, RabbitMQ, которым как ни странно надо уметь пользоваться )....Стало интересно попробовать что же это такое потоковое видео....Зашли на сайт проекта..скачали....решили сделать по спортивному то есть по ленивому...скачал бинарник..запустил
 получил



=ERROR REPORT==== 26-Dec-2012::00:18:43 ===
Loading of /home/bogdan/flussonic/flussonic.beam failed: badfile
escript: exception error: undefined function flussonic:main/1
  in function  escript:run/2
  in call from escript:start/1
  in call from init:start_it/1
  in call from init:start_em/1

=ERROR REPORT==== 26-Dec-2012::00:18:43 ===
beam/beam_load.c(1351): Error loading module flussonic:
  use of opcode 153; this emulator supports only up to 152
 
Что же вы мой горячо любимому языку такую котлету подсунули, кто же в этом разбираться то будет! Зашел на местный форум, прочитал про целые эпопеи по запуску erlyvideo, энтузиазма не прибавило...фиг с тобой давайте исходники скомпилим что ли...сначал попробуем старую версию erlyvideo, кукиш..

{"init terminating in do_boot",{function_clause,[{filename,do_flatten,[<<23 bytes="bytes">>,[]]},{filename,split,1},{'exRecord::Helpers',retrieve,3},{'exRecord::Definition',record,3},{erl_eval,do_apply,5},{erl_eval,exprs,5},{elixir_module,compile,5},{erl_eval,do_apply,5}]}}

Crash dump was written to: erl_crash.dump





          Ошибка повергла меня в ступор...понятное дело придеться пересмотреть свои взгляды на компиляцию erlang программ, наверно я компилирую как-то не так по-своему...Но блин и новая версия не захотела компилироваться, выдавай такую же трудно находимую ошибку... Маны курить мне не хотелось особо, да и не ожидал я такого подвоха от эээ продукта за который деньги хотят, а видео себя посмотреть то хочеться. В общем пришел на помощь проект nginx-rtmp-module. Да-да nginx и тут всех выручает. По инструкции быстро скомпили nginx из исходников с поддержкой модуля, ошибок никаких не было замечено на двух машинах.
Дальше дока....в репозитории есть папка test. Там ну очень наглядный пример....Я же при помощи флеша записывал свою рожу, кидал ее на nginx, а в другом браузере ожидал увидеть поток видео своего фейса...
    Конфиг в тестовом примере слегка бажный, но  все поправимо, если ты конечно знаком с nginx.  Для этого использовал одну из опций ретрансляции push.
Конфиг

rtmp {

    server {

        listen 1935; #порт на котором слушать

        chunk_size 128;

        publish_time_fix off;

        application myapp { #приложение для проигрования

            live on;

            on_publish http://localhost:8080/publish;
            on_play http://localhost:8080/play;
            on_record_done http://localhost:8080/record_done;
        }

   
        application mypush { #приложение для ретрансляции
            live on;
           #опция указывает что входящий поток 
#перенаправлять на наше же myapp
            push  rtmp://localhost:1935/myapp;
        }
    }
}


И собственно два html файла для записи вот старый добрый проигрователь... тут

И штука, которая мое лицо записывает тоже тут.
Все можно скачать в репозитории...и никаких тебе танцев с бубном


Комментариев нет: