2. Работает, только если данные всегда доступны по требованию.
Net
Sender Internet Receiver
Multiplexer Demultiplexer
Audio Video Audio Video
Encoder Encoder Decoder Decoder
Mic Camera Render Render
3. RTCP – Real-time Transport Control Protocol
RTP – Real-time Transport Protocol
(для сигнализационных пакетов)
Net
Media Data Internet
(audio, video)
Зависит от
Frame ? настроек
алгоритма UDP/TCP
Описано в
RTP-Packet RFC
4. В общем случае, нет возможности обеспечить гарантированную передачу
данных без потерь сохраняя приемлемую задержку.
Net
1 UDP Internet 1 1
2 ∆t 2 2
3 ∆t 3
4 4
5
5 ∆t 5
3 Delay=∑∆t
UPD – ненадежный < 250ms – ok
TCP – надежный, но не позволяет 4
< 500ms – acceptable
контролировать задержку Jitter Buffer
5. В общем случае, нет возможности обеспечить гарантированную передачу
данных без потерь сохраняя приемлемую задержку.
Но “масштаб бедствия” можно уменьшить: REDundancy, FEC, NACK Net
1 RED 1 2 ∆1 3 2 ∆1 3 ~1 2 3 AMR
ISAC
2 Требует поддержки со стороны алгоритма Silk
3
FEC 1 2 2 1 2
4
Увеличивает задержку
NACK 1 2 3 1 3 2 1 2 3
lost seqNum
Перегрузка канала
6. Net
RTP/RTCP
Sender Internet RTP/RTCP
Receiver
Jitter Buffer
Multiplexer
RED/FEC/NACK Demultiplexer
(RED/FEC/NACK)
Audio Video Audio Video
Encoder Encoder Decoder Decoder
Mic Camera Render Render
7. Существует большое количество аудио кодеков предназначенных для
передачи голоса по сети.
Audio
G711, G722 - Delay 20-60ms
G723.1, G729AB - Bitrate 8-64kbps Speex
other ITU-T’s G7xx - Sampling rate 8-32kHz iLBC
AMR (NB, WB) - VAD/DTX iSAC
Speex - PLC (Packet Loss Concealment) Silk, Opus
iLBC - Complexity < 80MHz
iSAC - Open source
Silk, Opus - Patent free
Существует большое количество аудио кодеков НЕ предназначенных для
передачи голоса по сети: MP3, AAC, WMA, FLAC…
8. Выбор видео кодеков совсем невелик.
Video
MPEG1/2, H263, MPEG4
H264, VP8 - Encoding quality H264, VP8
Key Frame
SideInfo
5xDelta
Encoder MV
K0 D1 D2 D3 D4 Quant
Delta Smpls
K0 D1 D2
Эффективно с точки зрения сжатия, однако, в общем случае, при
потере пакета восстановить последующие кадры невозможно.
9. RTP: First Lost Last Frame N Пытаемся декодировать
или пропускаем
Video
Мусор
D
e Декодирование
c
o невозможно
d
e Ok. Ошибка не
r
Текст распространяется
Ok
10. Борьба с потерями это всегда компромисс между эффективностью
кодирования и устойчивостью к потерям.
Video
Избегать длинных цепочек
75 frames
K D D K D
3 sec Задержка (залипание картинки), из-за
большого размера ключевого кадра и
отсутствия обратной связи.
11. Борьба с потерями это всегда компромисс между эффективностью
кодирования и устойчивостью к потерям.
Video
Перезапрашивать ключевой кадр
K D D K D
RTCP RTP Задержка (залипание картинки), из-за
большого размера ключевого кадра и
Internet позднего принятия решения.
12. Борьба с потерями это всегда компромисс между эффективностью
кодирования и устойчивостью к потерям.
Video
Уменьшать пик-фактор
peak-factor
K D D R1 D D R2
RTCP Не помогает, если R1 сильно
Confirmed(R1) ? R1 : K отличается от R2:
Size(R2) ~= Size(K).
Internet
13. Борьба с потерями это всегда компромисс между эффективностью
кодирования и устойчивостью к потерям.
Video
Использовать самовосстановление (всегда декодировать).
K D D K D
slice0 Увеличивает битрейт ухудшает
качество картинки при том же
slice1 битрейте.
14. Борьба с потерями это всегда компромисс между эффективностью
кодирования и устойчивостью к потерям.
Video
Избегать длинных цепочек
Перезапрашивать ключевой кадр
Уменьшать пик-фактор (recovery) PLC – Packet Loss Concealment
Самовосстанавливающиеся
последовательности Все меры бесполезны если
отсутствует контроль ширины полосы
15. Net
RTP/RTCP
Sender Internet RTP/RTCP
Receiver
Jitter Buffer
RED/FEC/NACK
(RED/FEC/NACK)
Audio Video Audio Video
Encoder Encoder Decoder Decoder
Mic Camera Render Render
16. Net
RTP/RTCP Internet RTP/RTCP
Jitter Buffer
RED/FEC/NACK
(RED/FEC/NACK)
Encoder+PLC Rate control Decoder+PLC
Silk, iSAC, VP8, Silk, iSAC, VP8,
Speex,… H264 Windows, OSX Speex,… H264
iOS, Android
X86, ARM AudioProc
Mic Camera Render Render
Devices
18. AEC - Acoustic Echo Canceler
AEC Internet
mic
speaker - Вычислительная сложность
- Double Talk
Digital
Только линейные искажения!
Analog
Adaptive
Digital
19. Net
RTP/RTCP Internet RTP/RTCP
RTP/RTCP
RTP/RTCP Voice&Video
RED/FEC/NACK
Engine Jitter Buffer
(RED/FEC/NACK)
Encoder+PLC Rate control Decoder+PLC
Silk, iSAC, VP8, Silk, iSAC, VP8,
Speex,… H264 Windows, OSX Speex,… H264
iOS, Android
AEC X86, ARM AudioProc
Mic Camera Render Render
Devices
20. Voice&Video
Engine
Разрабатывать с “0”
Использовать открытые проекты:
WebRTC, Libjingle, …
TODO
21. СПАСИБО!
Дмитрий Юдин
Ведущий разработчик, проект/департамент
d.yudin@corp.mail.ru