Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   RTMP сервер на эрланге*— erlyvideo (http://www.flasher.ru/forum/showthread.php?t=134028)

maxlapshin 19.12.2009 04:17

RTMP сервер на эрланге*— erlyvideo
 
Добрый день. Я хочу анонсировать RTMP сервер, написанный на языке erlang*— erlyvideo. Скачать его можно с http://erlyvideo.org/

Что это за сервер?

Это видеостриминговый сервер, который умеет раздавать видео из файлов, раздавать видео из потоков, принимать видео от клиентов а так же ещё кое чего.

Что он сейчас может:
1) раздавать mp4 (h264/aac) и flv файлы, естественно с быстрой перемоткой, причём даже flv;
2) принимать видео с веб-камеры клиентов, писать на диск и раздавать другим пользователям;
3) принимать MPEG TS поток. Например, сейчас в одном городе спутниковый телеканал пережимается на лету с помощью VLC а затем erlyvideo раздает это пользователям;
4) принимать с программ захвата видеокамеры RTSP/RTP поток. Например, это Wirecast или Quicktime Broadcaster. Вы ставите в интернете erlyvideo, берете ноутбук помощнее, втыкаете в него камеру и вещаете концерт или конференцию в интернет в два клика;
5) поддерживает виртуальные хосты с переконфигурацией на лету;
6) поддерживает плагины. Например моё приложение для вконтакта: http://vkontakte.ru/app1714990 написано в виде плагина для erlyvideo, который сам ходит к базе данных, авторизует пользователей, пишет их видео на диск, раздает и даже делает такую специфическую вещь, как отправляет скриншоты в виде AMF3 объектов;
7) предоставляет push-канал типа comet-а: данные поедут на браузер сами, без запроса с клиента.

Чем же он отличается от Adobe FMS, Wowza, Red5 и прочих?
От прочих он отличается тем, что уже умеет гораздо больше прочих.
От Red5 и Wowza отличается тем, что несравненно менее прожорлив по памяти и прочим ресурсам (10 метров на старте и ещё меньше мегабайта на клиента с шарингом открытых файлов). Рестриминг MPEG TS на несколько клиентов занимает порядка 1-2% среднего CPU. Wowza и FMS платные, в отличие от Erlyvideo. Плюсов хватает.

А чего ваще за эрланг такой?
Erlang*— это очень, очень крутой язык программирования, поставляющийся вместе с очень удобный рантаймом, спроектированным для создания сетевых сервисов. Создатели этого языка*— фирма Ericsson*— хвастаются что дошли до уровня при котором в год их софт на эрланге выключен не больше 3мс. Софт на эрланге можно обновлять, не отключая клиентов, писать на нём программы действительно удобно.

Что планируется сделать:
1) приделать к erlyvideo систему контроля за перекодированием видео. Залил в него файлик и он сам его ffmpeg-ом запёк. Далеко не все готовы возиться с полусотней настроек H264-кодировщика;
2) Shared Objects. Наверное они кому-то нужны;
3) веб-админку.

С чем мне нужна помощь?
1) расскажите, как вы используете существующие RTMP серверы, что вам нравится и что не нравится в них. Возможно я придумаю решение лучше для вас.
2) у меня совершенно уродливый штатный флеш-плеер, который я не могу починить. Было бы круто, если бы мне кто-нибудь помог с ним.
3) я не писал никакой документации, потому что код очень быстро развивается и глупо писать «просто документацию о сервере». Если кто-то заинтересовался и не знает с чего начать (несмотря на файл README, лежащий в корне проекта), то говорите и я по возможности опишу или сделаю чего надо.

И вопрос: будет ли интересно, если я тут буду постить сообщения об апдейтах erlyvideo?

pwlnw 20.12.2009 14:06

Цитата:

3) принимать MPEG TS поток. Например, сейчас в одном городе спутниковый телеканал пережимается на лету с помощью VLC а затем erlyvideo раздает это пользователям;
принимать поток от VLC каким протоколом? тут мне не понятно. сколько я не мучал VLC, так и не смог заставить его работать источником для RTMP.

Цитата:

4) принимать с программ захвата видеокамеры RTSP/RTP поток. Например, это Wirecast или Quicktime Broadcaster. Вы ставите в интернете erlyvideo, берете ноутбук помощнее, втыкаете в него камеру и вещаете концерт или конференцию в интернет в два клика;
а это очень интересно. дело в том, что даже для windows я не нашел работающего решения по захвату с ip-камеры. некоторые камеры выдают mpeg4 в RTP.

Хотелось бы удостовериться что сервер можно повесить на другой порт в дополнение к red5 и, пожалуй, на данный момент необходимости в shared objects даже нет.


Цитата:

1) расскажите, как вы используете существующие RTMP серверы, что вам нравится и что не нравится в них. Возможно я придумаю решение лучше для вас.
траслирую видео с usb-вебкамер и приличных камер подключенных в тв-тюнеру. Flash Media Live Encoder позволяет использовать только устройства из windows.
очень хотелось бы использовать ip-камеры из-за удобства установки и обслуживания.
Но тут все равно нужен будет перекодировщик с MPEG4 на h.264.
Так же c MJPEG-Камерами непонятно : может мне и не нужно такое качество и скорость обновления, я просто не пробовал.

Цитата:

2) у меня совершенно уродливый штатный флеш-плеер, который я не могу починить. Было бы круто, если бы мне кто-нибудь помог с ним.
А надо ли ? Меня устраивает flowplayer - есть и перемотка и live. одними лишь flashvars настраивается все. Вроде даже некая коллекция плагинов уже образовалась для него.
Цитата:

3) я не писал никакой документации, потому что код очень быстро развивается и глупо писать «просто документацию о сервере». Если кто-то заинтересовался и не знает с чего начать (несмотря на файл README, лежащий в корне проекта), то говорите и я по возможности опишу или сделаю чего надо.
одно лишь пошаговое howto по трансляции видео с помощью FMLE без написания и строчки кода покроет вас славой и низкочастотными поисковыми запросами.
все руководства по red5 почему-то упускают этот момент. (очевидно, считается что джавапрограммер настолько привык к ковырянию в api, что разбирается на лету. А вот не каждый же джавапрограммер)

Апдейты ... ну было бы полезно. Если сервер настолько хорош и многообещающий, то и в rss-ленту добавить не грех.

maxlapshin 21.12.2009 13:50

Цитата:

Сообщение от pwlnw (Сообщение 873850)
принимать поток от VLC каким протоколом? тут мне не понятно. сколько я не мучал VLC, так и не смог заставить его работать источником для RTMP.

Основной протокол в таких делах*— MPEG TS. Несмотря на то, что он создает до 30% накладных расходов по трафику, самоинкапсулированное потоковое видео чаще всего льют в нём. В таком же формате идет видео со спутника.

Erlyvideo умеет его читать и рестримить. Вот даже пример от пользователей: http://habrahabr.ru/linker/go/78614/


Цитата:

Сообщение от pwlnw (Сообщение 873850)
а это очень интересно. дело в том, что даже для windows я не нашел работающего решения по захвату с ip-камеры. некоторые камеры выдают mpeg4 в RTP.

Что бы захватить видео по RTP без RTSP, надо немного доработать, но это несложно. Раз есть код захвата RTP, то всё ок. Другая проблема в том, что просто mpeg4 возможно не проканает: ведь флеш его может и не прочитать. Ему нужен mpeg4 avc, т.е. h264, но для перекодирования всегда можно поставить VLC.


Цитата:

Сообщение от pwlnw (Сообщение 873850)
Хотелось бы удостовериться что сервер можно повесить на другой порт в дополнение к red5 и, пожалуй, на данный момент необходимости в shared objects даже нет.

ebin/erlmedia.app: настройка rtmp_port


Цитата:

Сообщение от pwlnw (Сообщение 873850)
траслирую видео с usb-вебкамер и приличных камер подключенных в тв-тюнеру. Flash Media Live Encoder позволяет использовать только устройства из windows.
очень хотелось бы использовать ip-камеры из-за удобства установки и обслуживания.
Но тут все равно нужен будет перекодировщик с MPEG4 на h.264.
Так же c MJPEG-Камерами непонятно : может мне и не нужно такое качество и скорость обновления, я просто не пробовал.

Хорошо, я понял проблему, поищу информацию про IP камеры, посмотрю, чего с ними сделать.

Цитата:

Сообщение от pwlnw (Сообщение 873850)
А надо ли ? Меня устраивает flowplayer - есть и перемотка и live. одними лишь flashvars настраивается все. Вроде даже некая коллекция плагинов уже образовалась для него.

О, посмотрю. У меня ещё есть такая фича, как запись, соответственно было бы круто взять готовый плеер для видеочата.


Цитата:

Сообщение от pwlnw (Сообщение 873850)
одно лишь пошаговое howto по трансляции видео с помощью FMLE без написания и строчки кода покроет вас славой и низкочастотными поисковыми запросами.
все руководства по red5 почему-то упускают этот момент. (очевидно, считается что джавапрограммер настолько привык к ковырянию в api, что разбирается на лету. А вот не каждый же джавапрограммер)

Апдейты ... ну было бы полезно. Если сервер настолько хорош и многообещающий, то и в rss-ленту добавить не грех.

Понял, сделаем. Я уже сделал домен erlyvideo.org, так что на нём я буду размещать всю подобную информацию.

pwlnw 21.12.2009 14:18

Совсем забыл - нужна простая авторизация источника в случае если он не может вещать круглостуточно.
Я не знаю как будет удобнее, плагин на ерланге или в сервер встроить
Авторизация должна быть настолько простая, что даже VLC бы смог вещать (да бог на следующем Google SoC напишут).
например, указываем адрес назначения rtmp://site.ru/stream1?key=49588747545
а клиенты забирают по адресу rtmp://site.ru/stream1 не видя этот ключ нигде.

maxlapshin 21.12.2009 17:05

Ага, авторизацию внесу в планы. Например, у меня сейчас RTSP или MPEG TS полностью открытые. Для полноценного выхода в продакшн такое, конечно, не всегда годится.

maxlapshin 31.12.2009 11:56

В erlyvideo появились shared objects. Оказалась несложная штука в реализации, так что теперь они работают и сохраняются.

Как и всё остальное, разделены по виртуальным хостам.

wvxvw 31.12.2009 16:16

Я постараюсь вникнуть + очень хочется верить, что недели через 3-4 будет больше свободного времени и, мне уже и так хотелось просто для пробы сделать видео плеер на HaXe - вот, если все срастется - постараюсь сделать плеер :)
Успехов в наступающем!

EDIT:
А, да, из пожеланий - совсем забыл - перекодировка во Flash Embedded Video - т.е. отдавать не FLV, а SWF со встроенным видео - на данный момент ни один из вышеперечисленных серверов это не умеет, и хотя это технически не должно быть очень сложно - без этого ну просто очень иногда напряжно... Кроме того, трансляция SWF (вместо FLV) позволяет сразу добавлять кучу функционала - в смысле интерактивности и т.п.

maxlapshin 31.12.2009 16:19

А HaXe разве не серверная технология?

wvxvw 31.12.2009 22:52

HaXe - это язык, который в том числе может компилироваться в Neko и PHP, но все-таки по большей части его используют для SWF.

maxlapshin 06.01.2010 12:15

Хорошо. Если какая-то помощь потребуется*— я на связи.


Часовой пояс GMT +4, время: 12:07.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.