← All posts tagged rtmp

yzh44yzh
Adobe FMS wowza rtmp Цитата:
Дальше начинается просто вакханалия крючкотворства. Дело в том, что Adobe выблевнула в 2009 году «спецификацию» RTMP. Этот документ описывает некоторый протокол, который очень похож на RTMP и Adobe упорно называет то, что описывает этот документ, как RTMP. И более того: в документе сказано, что после прочтения этого документа, вы не имеете права реализовывать RTMP серверы иначе, кроме как по этому документу. Отступление на один байт от этого документа лишает вас права использовать этот документ.

levgem.livejournal.com
yzh44yzh
Flash amf erlyvideo rtmp Сделал себе интересную подлянку с registerClassAlias. Допустим, у нас есть типизированный объект Message, зарегистрированный этой функцией, так что сервер может отправлять объекты такого типа клиентам. Коннектятся два клиента. Один отправляет Message, сервер бродкастит его на всех, кто законнекчен. И один из клиентов (который отправлял) получает типизированный Message , а второй (который не отправлял) — нетипизированный Object, но с такими же полями.

То бишь, у второго клиента registerClassAlias не сработал. Если второй клиент теперь отправит сообщение, то дальше оба будут получать нормальный Message.

А все потому, что я сделал так:
public class Message
{
registerClassAlias("com.flashdevs.textChatLib.Message", Message);
...

А нужно было так:
registerClassAlias("com.flashdevs.textChatLib.Message", Message);
public class Message
{
...

и registerClassAlias у меня вызывался только при инстанциировании Message, а не раньше. (Причем вызывался многократно при каждом инстанциировании :)
yzh44yzh
rtmp Народ, а кто-нибудь знает application server (не media server), работающий по rtmp? Ну кроме LCDS и ColdFusion.

Может я не знаю, а оно есть :)
yzh44yzh
rtmp Прелесть этого протокола (и медиа серверов) в том, что многопользовательское приложение можно сделать, вообще ни написав ни строчки кода на сервере. Любые данные можно бродкастить точно также, как аудио и видео, а remote shared objects очень даже shared, в том смысле, что в реальном времени синхронизируют какую-нибудь инфу между клиентами.

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

Что мешает? Исторически сложившаяся традиция использовать http и веб-сервера. Это была вынужденная необходимость N лет назад, когда RIA клиентом могла быть только веб-страница в браузере. Сейчас флэш клиенту нет особой надобности работать с сервером по http ибо по rtmp всяко быстрее и удобнее.

Так что сейчас что мешает? А ведь пока нету RTMP-сервера, адекватно подходящего на роль сервера приложений. Медиа-сервера либо дорогие (FMS, Wowza), либо тормознутые (Red5), либо маргинальные и никому не известные (ErlyVideo). LCDS вообще бешеных денег стоит. ColdFusion дорогой. BlazeDS не работает по rtmp (еще бы, если бы работал, то LCDS был бы не особо нужен).

И вот допустим кто-то (ну вот мы), хочет иметь сервер приложений, но чтобы работал по rtmp, а не по http. Какие варианты? Хорошо изучить Red5, BlazeDS и другие открытые сервера. Выбрать какой-то из них и доработать под себя. Или написать свой с нуля (на scala конечно), заимствуя подходы, да и код тоже, из вышеупомянутых серверов. Чтобы в итоге спокойно держал N тысяч одновременных клиентов, и чтобы все в риал-тайм :)

Будь моя воля, я бы выбрал 1й вариант, и постарался бы выжать по максимуму из того же Red5. Но воля не моя, а есть четкое указание писать свой сервер с нуля. Радует оказаное доверие, смущает очевидный недостаток квалификации :)

Как бы там ни было, но любой вариант начинается с изучения готовых решений. Так что мне предстоят интересные вечера :)