буфер джиттера

OctOpuss

New Member
Каким образом FlashPhoner обрабатывает джиттер от флэш-клиента? Если происходит потеря пакета между флэш-клиентом и flashphoner, используется ли какая-либо буферизация и т.д. Можете пояснить?
 

Max

Administrator
Staff member
1. В исходящем направлении от клиента Flash до WCS.
В этом направлении нет буфера джиттера.
Здесь работает протокол RTMFP.
Т.е. Flash посылает UDP пакеты на сервер, сервер отвечает пакетом ACK на каждый пакет.
Параметр audioReliable=false - означает частичную надежность. Т.е. если Flash посылает пакет UDP с аудиофреймом (напр. speex), и этот пакет теряется в сети, то Flash пересылает пакет несколько раз.
Если audioReliable=true то это полная надежность. Пакет пересылается до тех пор, пока не будет получен ответ ACK на данный пакет (т.е. произошла успешная доставка пакета).
Таким образом параметр audioReliable=true работает в точности как TCP(RTMP).
А параметр audioReliable=false работает по принципу частично надежного протокола UDP, что уменьшает задержку по сравнению с TCP/RTMP. Еще одной настройкой для аудио является параметр stream_mode_udp=true по умолчанию. Эта настройка отключается все повторные пересылки в данном направлении, делая таким образом реализацию протокола RTMFP ближе к нативному UDP.
JitterBuffer - это фишка VoIP, которая используется, в основном, на точках VoIP, например, Flash клиент или SIP клиент, телефон и т.д., т.к. буфер джиттера должен располагаться максимально близко к устройству, обеспечивающему воспроизведение аудио на звуковой карте.
Таким образом, для данного направления джиттер-буфер должен располагаться на конечном устройстве или клиентской программе (клиент Flash или SIP PSTN).
2. Направление от WCS сервера до клиента Flash.
В этом случае FlashPlayer работает как конечная точка VoIP и использует собственную реализацию джиттер-буфера, которая обеспечивает минимальную задержку и потерю пакетов.
Насколько мне известно, реализация дж.буфера во Flash основана на исходных кодах препроцессора speex, но я могу ошибаться.
В любом случае, дж.буфер - это алгоритм, который контроллирует потерю пакетов и статистику задержек, и отбрасывает пакеты, чтобы удержать задержку на низком уровне.
Я к сожалению не могу сказать больше за неимением доступа к реализации Flash Player.
 
Last edited:
Top