Форум 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

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

kutuzov 06.01.2010 19:40

будет ли хелп для запуска под виндой?

maxlapshin 07.01.2010 00:27

Да, добавлю, потому как есть пользователи под виндой.

maxlapshin 13.01.2010 02:42

Erlyvideo обзавелся поддержкой Shared Objects и рестримингом Shoutcast-а.

Первое означает поддержку приложений, ориентированных на многопользовательскую коммуникацию.

Второе означает, что вы можете вещать интернет-радио на веб-страницу так же, как и в вовзе.

wvxvw 01.02.2010 04:27

А как там с хелпом для виндовса? :rolleyes: чего-то не срастается...

maxlapshin 01.02.2010 09:15

Руки ещё не дошли: сами понимаете, ближайший живой виндовс только в виртуалке.

Aloran 02.02.2010 22:49

А поддержка комнат планируется? Связь с БД?
И хотелось бы видеть инфу не только на англицком, но и на отечественном... К сожалению вторым намного лучше владею, как думаю и большинство заходящих на данный сайт. Хотя отсутствие русского хелпа/мануала не критично.

maxlapshin 02.02.2010 22:54

Смотрите, связь с БД вполне возможна в плагинах на эрланге. Банально не хватает времени, что бы это описать, однако скоро его станет побольше и я сделаю это.

Однако, как верно подмечено, плагины на эрланге штука специфичная и я не хочу особо много уделять им внимания, поэтому одна из рабочих идей*— сделать скриптинг на v8, для которого есть node.js

maxlapshin 14.02.2010 23:02

http://erlyvideo.org/windows
Erlyvideo теперь запускается под виндовс и стартует как сервис.

maxlapshin 02.03.2010 19:32

Erlyvideo теперь умеет рестримить mp3 shoutcast а так же выдавать видео как MPEG-TS, например для приставок. В ближайшее время научится стримить на айфон.

Так же появился форум по поддержке erlyvideo, потому как очень большой трафик вопросов по почте.

maxlapshin 29.03.2010 15:59

erlyvideo научился стримить на айфон.

maxlapshin 08.04.2010 12:06

В erlyvideo появилось много нового: таймшифт, подписанный убунтовский репозиторий.

Так же я провел бенчмарки, erlyvideo смог раздать прямой эфир на 1800 клиентов с одной машины.

sasha84 20.05.2010 13:10

Добрый день.
В erlyvideo нет ли такой возможности как сведения двух flv-файлов?
Т.е. на сервере хранятся 2 звуковых flv-файла, без видео, я обращаюсь к серверу через NetStream и получаю от него поток, при проигрывании которого слышу один звук, наложенный на другой.

maxlapshin 20.05.2010 13:14

Динамического сведения с транскодированием и програмным наложением звука, конечно же нет.

Что мешает сделать два нетстрима?

sasha84 20.05.2010 13:54

Дело в том, что я делаю флеш-приложение, которое должно сводить 2 звуковых файла с возможностью сдвига начала проигрывания одного из них.
Пользователь подвинул начало проигрывания одного файла, например, на 1 секунду, нажал плей, я проигрываю первый файл, далее отслеживаю playheadTime и при достижении 1 секунды, начинаю проигрывать 2-й файл.
Проблема в том, что playheadTime всегда приходит разный. Может придти 1.1 с или 1.2 с и приходится стартовать 2-й файл с 1.1 или с 1.2 секунды.
При прослушивании такой рассинхрон очень заметен, а мне нужно проигрывать 2-й файл строго с 1-й секунды.
playheadUpdateInterval выставлен в 50 мс.
Пока проблему решить никак не получается.
Если бы эту задачу выполнял медиа-сервер, то проблемы не было бы.
Пробовал сначала вызывать через amf скрипт на сервере, который сводил файлы ffmpeg'ом, а потом запускать проигрывание сведенного файла, но получается очень
долго.

maxlapshin 20.05.2010 13:59

Можно заставить сервер посылать второй файл строго после 1-й секунды первого. Просто это не даст гарантии их синхронности =(

Сводить в один аудиопоток*— это займет столько же времени, сколько и ffmpeg-ом

kutuzov 20.05.2010 14:01

sasha84,
Sound.extract()
flash.events.SampleDataEvent
точность до семпла

sasha84 20.05.2010 14:25

Sound уже рассматривал, но, к сожалению, он работает только с мп3-файлами, а у меня флв.
Не буду вдаваться в подробности своего проекта, но перегонять флв в мп3, а потом работать с ним через Sound будет очень затратно, хотя возможно это единственное возможное решение проблемы.

kutuzov 20.05.2010 14:39

sasha84,
я конечно точно не в курсе, но что если скачивать flv и вырезать из него mp3 в рантайме
вроде flv открытый формат

maxlapshin 20.05.2010 15:24

flv*— это контейнер, mp3*— кодек. Однако в flv ещё всякие там speex или sorensen запаковывают.

maxlapshin 19.07.2010 17:55

А зачем нужно вклеивать FLV внутрь SWF? Я посмотрел, вроде для какого-то подмножества SWF это сделать можно.

wvxvw 21.07.2010 13:17

Цитата:

Сообщение от maxlapshin (Сообщение 923346)
А зачем нужно вклеивать FLV внутрь SWF? Я посмотрел, вроде для какого-то подмножества SWF это сделать можно.

Чтобы можно было например покадровую перемотку реализовать. :)

maxlapshin 21.07.2010 15:06

В 10.1 поменялось API и теперь вроде как обещана покадровая перемотка в RTMP потоке.

Но повторю: если очень-очень хочется, то есть проект, который запаковывает на лету SWF.

wvxvw 21.07.2010 16:45

Чесно говоря таких обещаний не видел, видел что обещали использовать буффер при перемотке на загруженый участок. А можно ссылку на обещания? Интересно :)

maxlapshin 21.07.2010 17:22

http://help.adobe.com/en_US/FlashPla...am.html#step()

wvxvw 22.07.2010 04:42

and when NetStream.inBufferSeek is true
Это, к сожалению, то, про что я говорил :( если мы не в буффере, то пролетаем. Т.е. это все рассчитано на стриминг, фишки типа VOD (video on demand) так не сработают. Или надо бесконечный буффер ставить, естессвенно увеличивая время загрузки и т.п... Вобще, хотели как лучше, а получилось как всегда. Т.е. на сегодняшний момент это обходится двумя методами - если в 10.1 плеере, то можно быстро парсить URLStream, вырезать из него кадры и скармливать их NetStream'у, либо ждать полной загрузки, и опять же, на клиенте конвертировать видео в SWF (один раз долго ждем, но зато потом играем быстро и без задержек сколько угодно). Как бы создание SWF на ходу не является принципиальным моментом, но для штуки типа редактора видео невозмозможность перемотать на нужный кадр, это вообще облом.

maxlapshin 22.07.2010 09:24

Погоди, а как тебе SWF позволит перемотать на нужный _кадр_, если у тебя видео в H.264?

wvxvw 23.07.2010 15:38

А смотря какой профайл... в лоу-профайл, на сколько я понимаю нету же кадров, которые нужно просчитывать исходя из предыдущих? Хотя, даже если есть, это все-равно более-менее тот же механизм, что и с MP3 кадрами, т.е. если плееру сказать, что нузно перемотать на N-й кадр, он посмотрит офсет MP3 кадра(кадров), возьмет предыдущий, и попытается синхронизовать. Т.е. если по-уму сделано, то плеер должен при перемотке на нужный кадр просчитать предыдущие, если это нужно для отображения... ну, как бы у меня нет такой информации, но я надеялся, что это так работает...
Хех, ну, может, если нет, то стоит подождать пока VP8 добавят :)

maxlapshin 06.10.2010 01:42

erlyvideo опять претерпел ряд изменений. В нём появились такие дополнительные опции, как работающий стриминг на айфон, добавлены совместимые камеры. В нём появился механизм продажи платных плагинов по подписке, среди них: видеорегистратор, стриминг с S3, полноценные серверные плейлисты.

Так же появилось микширование звука и бета-версия поддержки VoIP (SIP)

Crenth 07.10.2010 05:54

даешь бенчмарки VoIP !!!

Рачей 14.11.2010 15:57

Хм:-) Давно с red5 работаю, ..... надо бы попробовать эту штучку. А на CentOS сие чудо кто-нибудь ставил?


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

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