![]() |
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? |
Цитата:
Цитата:
Хотелось бы удостовериться что сервер можно повесить на другой порт в дополнение к red5 и, пожалуй, на данный момент необходимости в shared objects даже нет. Цитата:
очень хотелось бы использовать ip-камеры из-за удобства установки и обслуживания. Но тут все равно нужен будет перекодировщик с MPEG4 на h.264. Так же c MJPEG-Камерами непонятно : может мне и не нужно такое качество и скорость обновления, я просто не пробовал. Цитата:
Цитата:
все руководства по red5 почему-то упускают этот момент. (очевидно, считается что джавапрограммер настолько привык к ковырянию в api, что разбирается на лету. А вот не каждый же джавапрограммер) Апдейты ... ну было бы полезно. Если сервер настолько хорош и многообещающий, то и в rss-ленту добавить не грех. |
Цитата:
Erlyvideo умеет его читать и рестримить. Вот даже пример от пользователей: http://habrahabr.ru/linker/go/78614/ Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Совсем забыл - нужна простая авторизация источника в случае если он не может вещать круглостуточно.
Я не знаю как будет удобнее, плагин на ерланге или в сервер встроить Авторизация должна быть настолько простая, что даже VLC бы смог вещать (да бог на следующем Google SoC напишут). например, указываем адрес назначения rtmp://site.ru/stream1?key=49588747545 а клиенты забирают по адресу rtmp://site.ru/stream1 не видя этот ключ нигде. |
Ага, авторизацию внесу в планы. Например, у меня сейчас RTSP или MPEG TS полностью открытые. Для полноценного выхода в продакшн такое, конечно, не всегда годится.
|
В erlyvideo появились shared objects. Оказалась несложная штука в реализации, так что теперь они работают и сохраняются.
Как и всё остальное, разделены по виртуальным хостам. |
Я постараюсь вникнуть + очень хочется верить, что недели через 3-4 будет больше свободного времени и, мне уже и так хотелось просто для пробы сделать видео плеер на HaXe - вот, если все срастется - постараюсь сделать плеер :)
Успехов в наступающем! EDIT: А, да, из пожеланий - совсем забыл - перекодировка во Flash Embedded Video - т.е. отдавать не FLV, а SWF со встроенным видео - на данный момент ни один из вышеперечисленных серверов это не умеет, и хотя это технически не должно быть очень сложно - без этого ну просто очень иногда напряжно... Кроме того, трансляция SWF (вместо FLV) позволяет сразу добавлять кучу функционала - в смысле интерактивности и т.п. |
А HaXe разве не серверная технология?
|
HaXe - это язык, который в том числе может компилироваться в Neko и PHP, но все-таки по большей части его используют для SWF.
|
Хорошо. Если какая-то помощь потребуется*— я на связи.
|
будет ли хелп для запуска под виндой?
|
Да, добавлю, потому как есть пользователи под виндой.
|
Erlyvideo обзавелся поддержкой Shared Objects и рестримингом Shoutcast-а.
Первое означает поддержку приложений, ориентированных на многопользовательскую коммуникацию. Второе означает, что вы можете вещать интернет-радио на веб-страницу так же, как и в вовзе. |
А как там с хелпом для виндовса? :rolleyes: чего-то не срастается...
|
Руки ещё не дошли: сами понимаете, ближайший живой виндовс только в виртуалке.
|
А поддержка комнат планируется? Связь с БД?
И хотелось бы видеть инфу не только на англицком, но и на отечественном... К сожалению вторым намного лучше владею, как думаю и большинство заходящих на данный сайт. Хотя отсутствие русского хелпа/мануала не критично. |
Смотрите, связь с БД вполне возможна в плагинах на эрланге. Банально не хватает времени, что бы это описать, однако скоро его станет побольше и я сделаю это.
Однако, как верно подмечено, плагины на эрланге штука специфичная и я не хочу особо много уделять им внимания, поэтому одна из рабочих идей*— сделать скриптинг на v8, для которого есть node.js |
http://erlyvideo.org/windows
Erlyvideo теперь запускается под виндовс и стартует как сервис. |
Erlyvideo теперь умеет рестримить mp3 shoutcast а так же выдавать видео как MPEG-TS, например для приставок. В ближайшее время научится стримить на айфон.
Так же появился форум по поддержке erlyvideo, потому как очень большой трафик вопросов по почте. |
erlyvideo научился стримить на айфон.
|
В erlyvideo появилось много нового: таймшифт, подписанный убунтовский репозиторий.
Так же я провел бенчмарки, erlyvideo смог раздать прямой эфир на 1800 клиентов с одной машины. |
Добрый день.
В erlyvideo нет ли такой возможности как сведения двух flv-файлов? Т.е. на сервере хранятся 2 звуковых flv-файла, без видео, я обращаюсь к серверу через NetStream и получаю от него поток, при проигрывании которого слышу один звук, наложенный на другой. |
Динамического сведения с транскодированием и програмным наложением звука, конечно же нет.
Что мешает сделать два нетстрима? |
Дело в том, что я делаю флеш-приложение, которое должно сводить 2 звуковых файла с возможностью сдвига начала проигрывания одного из них.
Пользователь подвинул начало проигрывания одного файла, например, на 1 секунду, нажал плей, я проигрываю первый файл, далее отслеживаю playheadTime и при достижении 1 секунды, начинаю проигрывать 2-й файл. Проблема в том, что playheadTime всегда приходит разный. Может придти 1.1 с или 1.2 с и приходится стартовать 2-й файл с 1.1 или с 1.2 секунды. При прослушивании такой рассинхрон очень заметен, а мне нужно проигрывать 2-й файл строго с 1-й секунды. playheadUpdateInterval выставлен в 50 мс. Пока проблему решить никак не получается. Если бы эту задачу выполнял медиа-сервер, то проблемы не было бы. Пробовал сначала вызывать через amf скрипт на сервере, который сводил файлы ffmpeg'ом, а потом запускать проигрывание сведенного файла, но получается очень долго. |
Можно заставить сервер посылать второй файл строго после 1-й секунды первого. Просто это не даст гарантии их синхронности =(
Сводить в один аудиопоток*— это займет столько же времени, сколько и ffmpeg-ом |
sasha84,
Sound.extract() flash.events.SampleDataEvent точность до семпла |
Sound уже рассматривал, но, к сожалению, он работает только с мп3-файлами, а у меня флв.
Не буду вдаваться в подробности своего проекта, но перегонять флв в мп3, а потом работать с ним через Sound будет очень затратно, хотя возможно это единственное возможное решение проблемы. |
sasha84,
я конечно точно не в курсе, но что если скачивать flv и вырезать из него mp3 в рантайме вроде flv открытый формат |
flv*— это контейнер, mp3*— кодек. Однако в flv ещё всякие там speex или sorensen запаковывают.
|
А зачем нужно вклеивать FLV внутрь SWF? Я посмотрел, вроде для какого-то подмножества SWF это сделать можно.
|
Цитата:
|
В 10.1 поменялось API и теперь вроде как обещана покадровая перемотка в RTMP потоке.
Но повторю: если очень-очень хочется, то есть проект, который запаковывает на лету SWF. |
Чесно говоря таких обещаний не видел, видел что обещали использовать буффер при перемотке на загруженый участок. А можно ссылку на обещания? Интересно :)
|
|
and when NetStream.inBufferSeek is true
Это, к сожалению, то, про что я говорил :( если мы не в буффере, то пролетаем. Т.е. это все рассчитано на стриминг, фишки типа VOD (video on demand) так не сработают. Или надо бесконечный буффер ставить, естессвенно увеличивая время загрузки и т.п... Вобще, хотели как лучше, а получилось как всегда. Т.е. на сегодняшний момент это обходится двумя методами - если в 10.1 плеере, то можно быстро парсить URLStream, вырезать из него кадры и скармливать их NetStream'у, либо ждать полной загрузки, и опять же, на клиенте конвертировать видео в SWF (один раз долго ждем, но зато потом играем быстро и без задержек сколько угодно). Как бы создание SWF на ходу не является принципиальным моментом, но для штуки типа редактора видео невозмозможность перемотать на нужный кадр, это вообще облом. |
Погоди, а как тебе SWF позволит перемотать на нужный _кадр_, если у тебя видео в H.264?
|
А смотря какой профайл... в лоу-профайл, на сколько я понимаю нету же кадров, которые нужно просчитывать исходя из предыдущих? Хотя, даже если есть, это все-равно более-менее тот же механизм, что и с MP3 кадрами, т.е. если плееру сказать, что нузно перемотать на N-й кадр, он посмотрит офсет MP3 кадра(кадров), возьмет предыдущий, и попытается синхронизовать. Т.е. если по-уму сделано, то плеер должен при перемотке на нужный кадр просчитать предыдущие, если это нужно для отображения... ну, как бы у меня нет такой информации, но я надеялся, что это так работает...
Хех, ну, может, если нет, то стоит подождать пока VP8 добавят :) |
erlyvideo опять претерпел ряд изменений. В нём появились такие дополнительные опции, как работающий стриминг на айфон, добавлены совместимые камеры. В нём появился механизм продажи платных плагинов по подписке, среди них: видеорегистратор, стриминг с S3, полноценные серверные плейлисты.
Так же появилось микширование звука и бета-версия поддержки VoIP (SIP) |
даешь бенчмарки VoIP !!!
|
Хм:-) Давно с red5 работаю, ..... надо бы попробовать эту штучку. А на CentOS сие чудо кто-нибудь ставил?
|
| Часовой пояс GMT +4, время: 19:59. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.