WebRTC (phần 2) - Kiến trúc WebRTC

Phần 1 mình đã giới thiệu tổng quan về WebRTC Phần 2 mình sẽ chia sẻ kiến trúc của WebRTC

Architecture

Nắm được kiến trúc của WebRTC giúp chúng ta hiểu sâu và phát triển dễ dàng hơn ứng dụng của mình.

Kiến trúc tổng quan như sau:

Có 2 lớp riêng biệt (distinct layers):

  • Browser deveopers sẽ quan tâm đến WebRTC C++ API và các thành phần core sâu hơn của nó như Voice Engine, Video Engine, Transform. Hay dễ hiểu hơn đó là âm thanh, video và kết nối mạng.

  • Web App developers sẽ quan tâm tới Web API.

Your Web App

Một ứng dụng phát triển bởi các developer bên thứ 3 với video và audio chat, xây dựng dựa trên Web API để kết nối thời gian thực.

Web API

Một API được sử dụng bởi các developer bên thứ 3, để phát triển web video.

WebRTC Native C++ API

Một tầng API cho phép trình duyện dễ dàng thực thi Web API.

Transport / Session

Các session componnent được xây dựng bời việc sử dụng lại các component từ libjingle, không yêu cầu hoặc sử dụng giao thức xmpp/jingle .

RTP Stack

Một network stack cho RTP (Real Time Protocol)

STUN/ICE

Một component cho phép các cuộc gọi sử dụng STUN và ICE để thiết lập kết nối thông qua các loại networks khác nhau.

Session Management

Một lớp session trìu tượng (abstracted session layer) cho phép thiết lập cuộc gọi và lớp quản lý.

VoiceEngine

VoiceEngine là một framework cho audio media chain, từ card âm thanh tới mạng.

iSAC / iLBC / Opus

Đây là những audio codec, đơn giản hiểu là bộ mã hóa và giải mã tín hiệu âm thanh.

  • iSAC: Một băng tần rộng (wideband) và băng tần siêu rộng (super wideband) audio codec cho VoIP và streaming audio. iSAC sử dụng tần số 16 kHz hoặc 32 kHz ví dụ thương xuyên với một adaptive và biến bit rate của 12 - 52kbps. Codec là một thiết bị hoặc một chương trình máy tính có khả năng mã hóa và giải mã một dòng dữ liệu hoặc tín hiệu. Từ "codec" là từ kết hợp của bất kỳ những cụm từ sau: 'Compressor-Decompressor', 'Coder-Decoder', hoặc 'Compression/Decompression algorithm'. Các codec mã hóa một dòng dữ liệu hoặc tín hiệu để truyền tải, lưu trữ, hoặc bảo mật và giải mã nó để xem hoặc sửa đổi. Các codec thường được sử dụng trong các giải pháp hội nghị truyền hình và streaming media. Một máy quay biến đổi tín hiệu tuần tự sang tín hiệu số, sau đó sẽ chuyển qua một bộ nén video để truyền tải tín hiệu số. Một thiết bị nhận sẽ chuyển tín hiệu qua một bộ giải nén video, sau đó một thiết bị biến đổi từ tín hiệu số sang tín hiệu tuần tự để thể hiện nội dung. Một bộ giải nén âm thanh sẽ biến đổi tín hiệu âm thanh tuần tự sang tín hiệu số để truyền tải. Một thiết bị nhận sẽ biến đổ tín hiệu số trở lại tín hiệu tuần tự thông qua một bộ giải nén âm thanh để phát lại nội dung.

  • iLBC: Một narrowband speech codec cho VoIP và streaming audio. Sử dụng tần số 8 kHz với một bitrate of 15.2 kbps cho 20ms khung và 13.33 kbps cho 30ms khung. Định nghĩa bởi IETF RFCs 3951 và 3952.

  • Opus: hỗ trợ hằng và biến bitrate mã hóa từ 6 kbit/s tới 510 kbit/s, khung size từ 2.5 ms tới 60 ms. Được định nghĩa bởi IETF RFC 6176. NetEQ cho Voice.

Acoustic Echo Canceler (AEC)

The Acoustic Echo Canceler là một phần mềm dựa trên các thành phẫn xử lý tín hiệu đã được xóa. Trong real time, acoustic cho kết quả từ voice được chạy tới mircrophone đang hoạt động

Noise Reduction (NR)

Noise Reduction component là một phần mềm dựa trên các thành phần xử lý tín hiệu, nhằm loại bỏ các loại tiếng ồn kết hợp với VoIP. (Hiss, fan noise, etc…)

VideoEngine

VideoEngine là một framework video media chain cho video, từ camera tới mạng, và từ mạng tới màn hình.

VP8

Video codec từ dự án WebM. Nó phù hợp với RTC như một thiết kế cho độ trễ thấp (low latency)

Video Jitter Buffer

Jitter Buffer động cho video. Giúp che giấu ảnh hưởng của jitter và packet bị mất trong toàn bộ chất lượng video.

Image enhancements

Ví dụ như xóa tiếng ồn video từ ảnh quay bởi webcam.