Брандмауэр делает 20-секундную задержку на rtmp flash player

Привет, у меня есть плеер, который работает через брандмауэр, используя пакеты rtmp на порту 1935. Проблема, которую я получаю, заключается в том, что потоковая передача начинается через 20 секунд после запуска плеера.

Что может быть причиной этой проблемы.

При выключенном брандмауэре плеер начинает стримить сразу с открытия.


person Vlad    schedule 16.10.2012    source источник
comment
Звучит как отставание сети; возможно, брандмауэр каким-то образом анализирует каждый пакет?   -  person JeffryHouser    schedule 16.10.2012
comment
Я пробовал это dl.dropbox.com/u/2918563/flvplayback.swf для потоковой передачи, и он работает хорошо, даже если брандмауэр включен. Так что я предполагаю, что у игрока есть некоторые проблемы. Что я должен добавить в код AS3 для потоковой передачи через rtmp на порт 1935?   -  person Vlad    schedule 16.10.2012


Ответы (2)


Flash-плееры на RTMP имеют резервную цепочку, в которой они пытаются подключиться по TCP:1935, и если это не удается, попробуйте TCP:80. Эта резервная цепочка может занять некоторое время, особенно если ваш брандмауэр отбрасывает 1935 пакетов, а не отклоняет их.

Если у вас есть доступ к конфигурации брандмауэра, попробуйте изменить политику 1935 либо разрешить, либо отклонить (но не удалить).

В противном случае, если вы можете изменить HTML, вы можете попытаться изменить схему URL-адреса ссылки RTMP на «rtmpt://» вместо «rtmp://». Это приведет к тому, что проигрыватель сразу попытается использовать порт 80 (хотя, когда RTMP работает на порту 1935, он работает лучше, чем RTMPT на порту 80).

person onon15    schedule 16.10.2012
comment
Я что-то упустил в своем коде для rtmp на 1935? я внедрил стандартное сетевое соединение as3 и netstream для rtmp, и проигрыватель работает хорошо, но когда брандмауэр включен, он запаздывает на 20 секунд, пока не начнет потоковую передачу - person Vlad; 16.10.2012
comment
Если вы открываете ресурс rtmp:// в as3, а порт 1935 не может подключиться, он попытается повторно подключиться к порту 80 (не требуя, чтобы вы явно кодировали что-либо для этого). Если вы используете rtmpt://, это заставит соединение быть на порту 80 с самого начала. - person onon15; 16.10.2012

Оказалось, что плеер получает имя хоста вместо IP-адреса для потоковой передачи, поэтому он пытался это сделать в течение 20 секунд. Хорошо, мы обнаружили, что DNS не разрешает URL-адрес для потоковой передачи должным образом :) Поэтому используйте реальный IP-адрес для потоковой передачи вместо имени хоста.

person Vlad    schedule 22.10.2012