Trong giới hạn của một tiểu luận báo cáo kết thúc môn học, nội dung của bản báo cáo sẽ được trình bày theo yêu cầu Đề tài “xây dựng WebRTC video call” trong danh mục “Danh sách đề tài đồ
Trang 1KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
BÁO CÁO ĐỒ ÁN CƠ SỞ 4
ĐỀ TÀI: NGHIÊN CỨU KỸ THUẬT VÀ XÂY DỰNG
Trang 2LỜI MỞ ĐẦU
1
Dưới sự phát triển không ngừng của ngành công nghệ thông tin và trong xuthế tiến đến cuộc cách mạng công nghiệp 4.0 Để đáp ứng nhu cầu việc đơn giảnhóa trong việc giao tiếp, một giải pháp hoàn thiện đem đến cho con người lợi ích
về truyền thông và liên lạc Công nghệ WebRTC là một công nghệ đang rất phổbiến hiện nay Được sự quan tâm giúp đỡ của các thầy cô giáo viên hướng dẫn làThS Nguyễn Anh Tuấn chúng em xin cảm ơn Khoa Công nghệ thông tin nóichung và xin cảm ơn thầy Tuấn nói riêng đã tạo điều kiện cho chúng em có cơ hộitìm hiểu cũng như hoàn thành bản tiểu luận, báo cáo về WebRTC
Trong giới hạn của một tiểu luận báo cáo kết thúc môn học, nội dung của bản
báo cáo sẽ được trình bày theo yêu cầu Đề tài “xây dựng WebRTC video call”
trong danh mục “Danh sách đề tài đồ án cơ sở 5” của Khoa Công Nghệ Thông
Tin và Truyền Thông - Đại học Đà Nẵng, bao gồm:
Chương 1: Mạng ngang hàng(P2P) và các ứng dụng của nó
Chương 2: WebRTC và xây dựng WebRTC video call
Được sự giúp đỡ tận tình của Thầy giáo hướng dẫn, chúng em đã hoàn thànhđược những nhiệm vụ cơ bản đề ra Tuy nhiên, với thời gian và kiến thức có hạn,bản báo cáo này chắn chắn còn nhiều khiếm khuyết, em rất mong nhận được góp
ý chân thành của Thầy giáo và các bạn
Em xin chân thành cảm ơn!
Sinh viên thực hiện
Võ Văn Nhã Nguyễn Mậu Nhật Tường
Trang 3NHẬN XÉT
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 4ĐẶT VẤN ĐỀ
Cùng với sự bùng nổ công nghệ, người dùng Internet, nhu cầu giao tiếp, chia
sẻ thông tin, trao đổi dữ liệu ngày càng lớn Về chia sẻ thông tin và dữ liệu, trênthế giới đã có rất nhiều hình thức với các công nghệ, giao thức, ứng dụng khácnhau, từ FTP, Email đến các hình thức chia sẻ P2P (Peer-to-Peer) như Bitorrent,hoặc ứng dụng dịch vụ cloud như Dropbox, OneDrive, Google Drive…
Về giao tiếp thời gian thực thì đã có những ứng dụng messenger rất thànhcông và được người dùng chào đón như Skype, Viber, Whatsapp, Line,Hangouts…Tuy nhiên, vì nhiều lý do từ tốc độ, bảo mật an toàn thông tin và đặcbiệt là sự tiện dụng, vẫn tiếp tục có các nghiên cứu để đơn giản hóa việc giao tiếp,chia sẻ dữ liệu, hỗ trợ người dùng một cách nhanh nhất mà không đòi hỏi phảithao tác nhiều hay cài đặt thêm các plugin hoặc ứng dụng trên máy Cụ thể hơn,mong muốn sử dụng trình duyệt không chỉ để lướt web, check mail mà như là mộtcông cụ hỗ trợ tất cả nhu cầu từ chia sẻ file đến giao tiếp thời gian thực từ lâu đãđược nhen nhóm và thực sự phát triển mạnh từ năm 2009
Ý tưởng ban đầu từ Google với dự án mã nguồn mở browser-based real-timecommunication, gọi là WebRTC, mục đích chính là tạo khả năng giao tiếp thờigian thực giữa trình duyệt Đến nay WebRTC được thiết kế để có thể tích hợp vớicác hệ thống truyền thông hiện tại như VoIP, các SIP client khác nhau, thậm chí
cả mạng PSTN WebRTC đang tiếp tục phát triển, được các tổ chức tiêu chuẩn thếgiới bàn thảo để chuẩn hóa các giao thức, các APIs trong trình duyệt để hỗ trợWebRTC WebRTC cũng được những vendor trình duyệt lớn hỗ trợ trong việcphát triển, đảm bảo trình duyệt có thể kết nối trực tiếp với nhau và thực hiện đượccác yêu cầu về thời gian thực trong giao tiếp Điều này sẽ mở ra một giai đoạnmới của Web, thực sự mang Web đến với thế giới viễn thông
Trang 5CHƯƠNG 1 MẠNG NGANG HÀNG (P2P) VÀ CÁC ỨNG DỤNG
1.1 TỔNG QUAN VỀ MẠNG NGANG HÀNG (P2P)
1.1.1 Giới thiệu
- Mạng ngang hàng (P2P) hay còn gọi là Peer-To-Peer bắt đầu xuất hiện từnăm 1999 và đã thu hút sự quan tâm của giới công nghệ thông tin trongnhững năm gần đây Đặc biệt, việc áp dụng các mô hình P2P trong việcxây dựng những ứng dụng chia sẻ file (file sharing), video call, điện thoạitrên nền tảng Internet (Internet-based telephony) dã đạt được nhiều thànhcông
- Hiện nay, các ứng dụng P2P chiếm khoảng 50% (thậm chí 75%) băng thông trên Internet
- Các ứng dụng của kiểu mạng này như là: Napster,Skype, BitTorrent, v.v
1.1.2 Định nghĩa
- Mạng ngang hàng là một kiểu mạng được thiết kế cho các thiết bị trong đó
có chức năng và khả năng của các thiết bị là như nhau
- Mạng P2P không có khái niệm trạm (client) hay máy chủ (server) mà chỉ
có khái niệm các nốt (peers) đóng vai trò như cả client và server
Trang 6- Mạng ngang hàng là một hệ thống phân tán đặc biệt trong tầng ứng dụng,
ở đó mỗi cặp điểm nút có thể giao tiếp với nhau thông qua giao thức địnhtuyến trong các tầng mạng ngang hàng Mỗi điểm nút giữ một đối tượng
dữ liệu nào đó có thể là nhạc, ảnh tài liệu, v.v… Mỗi điểm nút có thể truyvấn tới đối tượng nó cần từ các điểm nút khác thông qua kết nối logictrong tầng mạng ngang hàng
1.1.3 So sánh mô hình Client-Server và mô hình Peer-To-Peer:
b Ứng dụng:
Sự ra đời của mạng ngang hàng đã tạo ra cách thức quản lí mới cho hàng loạt các lĩnh vực ứng dụng như: giao tiếp (communication), chia sẻ file (fliesharing), băng thông (bandwidth), vấn đề lưu trữ (storage), các chu trình xử
Trang 8CHƯƠNG 2 WEBRTC VÀ XÂY DỰNG WEBRTC VIDEO CALL
2.1 TỔNG QUAN
WebRTC là một nỗ lực để xây dựng một framework mở có khảnăng giao tiếp audio và video thời gian thực, nó có thể biến các trình duyệtweb thành một nền tảng cho giao tiếp giữa người với người Giao tiếp thời gianthực trong trình duyệt web đã có trứớc đây tuy nhiên chúng ta phải cài đặt phầnmềm của bên thứ ba lên trình duyệt web WebRTC mang lại hỗ trợ giaotiếp thời gian thực từ ngay bên trong các trình duyệt web và các nhà pháttriển web có thể sử dụng một cách tự do thông qua các JavaScript API tiêuchuẩn Điều này mang lại giao tiếp thời gian thực như là một tính năng choweb, có thể thúc đẩy sự đổi mới hơn nữa
WebRTC (Web Real-Time Communications) là một tập hợp các hàm lậptrình dùng cho việc liên lạc thời gian thực bằng video, âm thanh cũng như cácloại dữ liệu khác WebRTC có thể giúp chúng ta gọi điện video ngay trong trìnhduyệt mà không cần đăng kí tài khoản, cũng không cần cài thêm plugin gì phứctạp, ngoài ra chúng còn được xài để phát triển game chơi trực tiếp trong trìnhduyệt và rất nhiều loại ứng dụng khác WebRTC là gì? , người ta đang dùng nó
ra sao và những trở ngại nào đang hiện hữu với chuẩn này
2.2 SƠ LƯỢC LỊCH SỬ CỦA WEBRTC
Ý tưởng phát triển WebRTC được nhóm kỹ sư chịu trách nhiệm cho GoogleHangouts đưa ra từ tận năm 2009 Vào thời gian đó, để truyền tải video, hìnhảnh trên web thì người ta thường phải xài đến Flash Nhóm kỹ sơ Hangouts lạikhông muốn sử dụng công nghệ này, và họ bắt đầu tự làm một chuẩn riêng chomình Đến năm 2010, Google thâu tóm hai công ty On2 và Global IP Solutions(GIPS) để lấy công nghệ truyền dữ liệu thời gian thực làm nền tảng choWebRTC về sau
Vào tháng 5/2011, Google ra mắt một dự án nguồn mở dành cho việc giaotiếp thời gian thực giữa trình duyệt với nhau, và từ lúc này dự án mang tênWebRTC
Đến 27/10/2011, W3C ra mắt bản nháp đầu tiên của WebRTC Tháng11/2011, Chrome 23 ra mắt, trở thành trình duyệt đầu tiên có tích hợp WebRTCngay từ bên trong WebRTC vẫn còn đang tiếp tục được phát triển chứ chưahoàn thiện một cách chính thức
Trang 92.3 KHÁI NIỆM WEBRTC
WebRTC không chỉ là một sản phẩm hay một hàm API duy nhất Nó là cảmột tập hợp rất nhiều các hàm có thể được lập trình viên sử dụng cho nhiều mụcđích khác nhau Có hàm chỉ để làm những việc đơn giản như đòi quyền truy cậpvào webcam và microphone của máy tính, có hàm phức tạp hơn thì để thiết lậpkết nối giữa hai người dùng với nhau, có hàm còn dùng để chia sẻ màn hình vớingười khác Và rồi có hàm để hai người gọi video cho nhau, cũng là chức năng
"nổi tiếng" nhất của WebRTC tính đến thời điểm hiện tại
Tuy nhiên, tất cả mọi hàm lập trình nằm trong bộ API có một điểm chung vôcùng quan trọng: chúng thực thi hầu hết các tác vụ theo thời gian thực Đó là lý
do vì sao chữ Real-Time xuất hiện trong cái tên của bộ hàm này Và nó không chỉđược dùng cho việc gọi video giữa hai trình duyệt mà người ta còn có thể làmnhiều chuyện khác, miễn là chuyện đó có liên quan đến việc làm cho hai hoặcnhiều người dùng liên lạc với nhau
Trên trang web của mình, WebRTC cho biết họ được hỗ trợ chính thức bởiGoogle, Mozilla, Opera cùng nhiều đơn vị khác Mục đích cuối cùng của dự ánnày là nhằm "mang lại các ứng dụng phong phú, chất lượng cao và chạy theo thờigian thực có thể được phát triển bởi lập trình viên cho các trình duyệt, nền tảng diđộng, thiết bị Internet of Things, và cho phép tất cả bọn chúng liên lạc với nhauthông qua một bộ các giao thức chung"
Để sử dụng các hàm lập trình WebRTC, các lập trình viên có thể xài rất nhiềuloại ngôn ngữ lập trình quen thuộc: nếu như viết trang web thì họ được quyền xàiJavaScript, nếu làm app cho Android thì dùng Java, viết cho iOS thì dùngObjective-C, còn viết app cho Windows thì dùng C++
Gọi điện cho nhau bằng trình duyệt Chrome trên Android, không cần cài thêm
gì cả Bên cạnh đó, CU-RTC-Web là một phần mở rộng được Microsoft "cốnghiến" cho WebRTC Nó viết tắt cho cụm từ Customizable, Ubiquitous Real TimeCommunication over the Web Giải thích thêm về đóng góp của mình, Microsoftcho biết tính "tùy biến" của nó nằm ở chỗ các ứng dụng có thể phản hồi theo thờigian thực với chất lượng của đường truyền Ví dụ, khi tốc độ mạng bị giảm đi,lập trình viên có thể ra lệnh cho ứng dụng nền web của mình chuyển sang dùngkênh âm thanh thay cho kênh hình ảnh, thậm chí ngừng hoạt động đến khi tínhiệu tốt trở lại Còn thuộc tính "mọi lúc mọi nơi" (Ubiquitous) có nghĩa là ngườidùng sẽ giao tiếp được với bạn bè của mình mặc cho trình duyệt và thiết bị sửdụng khác nhau CU-RTC-Web sẽ hoạt động tốt trên cơ sở hạ tầng mạng hiện tại
để đảm bảo tính tương thích cao
Trang 102.4 KIẾN TRÚC CỦA WEBRTC
Kiến trúc tổng quan của webRTC như sau:
Hình 2.1 Kiến trúc của WebRTC
Có 2 lớp riêng biệt (distinct layers):
Browser developers sẽ quan tâm đến WebRTC C++ API và các thành phầncốt lõi 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
Trang 112.5 THÀNH PHẦN TRONG CẤU TRÚC WEBRTC
2.5.1 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
2.5.2 Web API
Một API được sử dụng bởi các developer bên thứ 3, để phát triển web video
2.5.3 WebRTC Native C++ API
Một tầng API cho phép trình duyệt dễ dàng thực thi Web API
2.5.4 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
Trang 122.5.9 iSAC / iLBC / Opus
iSAC: Một băng tần rộng (wideband) và băng tần siêu rộng (superwideband) 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 bitratecủ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 trongcá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 âmthanh tuần tự sang tín hiệu số để truyền tải Một thiết bị nhận sẽ biến đổ tínhiệ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átlạ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.33kbps 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, khungsize từ 2.5 ms tới 60 ms Được định nghĩa bởi IETF RFC 6176 NetEQ choVoice
Trang 132.5.10 NetEQ
Một bộ đệm jitter động và thuật toán che giấu lỗi được sử dụng để che giấu các tác động tiêu cực của jitter mạng và mất gói Giữ độ trễ càng thấp càng tốt trong khi vẫn duy trì chất lượng giọng nói cao nhất
2.5.11 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 đượcchạy tới mircrophone đang hoạt động
2.5.12 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…)
2.5.15 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
2.5.16 Image enhancements
Ví dụ như xóa tiếng ồn video từ ảnh quay bởi webcam
Trang 142.6 CÁC THÀNH PHẦN KẾT NỐI TRONG WEBRTC
Hình 2.3 Kết nối trong webRTC
1 Firewall: là 1 hệ thống an ninh mạng, có thể dựa trên phần cứng hoặc
phần mềm, sử dụng các quy tắc để kiểm soát traffic vào, ra khỏi hệ thống,kiểm soát các truy cập đến nguồn lực của mạng thông qua một mô hìnhkiểm soát chủ động Nó hoạt động như một rào chắn giữa mạng an toàn vàmạng không an toàn
2 NAT ( Network Address Translation ): thường thay đổi địa chỉ thường là
địa chỉ cục bộ (IP Private) của một kết nối mạng thành địa chỉ công cộng(IP Public) do các máy trong mạng LAN được đặt IP Private và IP privatekhông tồn tại ngoài Internet
Trang 153 STUN (Simple Traversal Of UDP Through NAT): khi một máychủ bất kì xài NAT (behind NAT) thì STUN server sẽ giúp cho client đóbiết được địa chỉ IP và Port mà thiết bị NAT sử dụng Từ đó, giúp cho cácpeer có thể lấy được địa chỉ của peer khác (IP nào, cổng mấy, NAT loạigì) Port ở đây là các cổng ứng dụng nằm trên Firewall hay router Thôngtin này được sử dụng để thiết lập giao tiếp UDP giữa 2 host mà đều nằmsau NAT router Giao thức STUN được định nghĩa trong FRC 5389 (FRC
5389 cung cấp phương tiện cho điểm cuối để xác định địa chỉ IP và cổngđược phân bố bởi NAT tương ứng với địa chỉ IP, có tác dụng kiểm tra kếtnối hoặc chuyển tiếp các gói giữa hai điểm cuối)
- Nhược điểm: nó không support Symmetric NAT (NAT có nhiều loại) Symmetric NAT sẽ NAT cả port đối với mỗi kết nối đến một địa chỉ đíchkhác nhau
-4 TURN (Traversal Using NAT Relay): giống STUN tuy nhiên
TURN hỗi trợ cả giao thức TCP làm giao thức truyền tải, nó bổ sung chonhược điểm của STUN Dữ liệu thay vì được gửi trực tiếp tới các peer thìcác peer sẽ gửi dữ liệu tới các TURN server và TURN server sẽ đóng vaitrò trung gian vận chuyển gói tin
- Ưu điểm:
+ Nâng cao chất lượng dịch vụ
+ Đảm bảo an toàn thông tin khi truyền dẫn
- Nhược điểm:
+ Chi phí sử dụng lớn vì sử dụng lưu lượng băng thông lớn (chất lượngfull HD hay video HD)
5 ICE (Interactive Communication Establishment): Là một giao
thức được dùng để thiết lập phiên media dựa trên UDP đi qua NAT mộtcách nhanh nhất
- ICE sẽ tìm đường tốt nhất để kết nối giữa các peer, nó thử tất cả khả năng
có thể kết nối một cách song song và lựa chọn con đường hiệu quả nhất
- Đầu tiên nó sẽ cố gắng tạo ra một kết nối bằng cách sử dụng địa chỉ thuđược từ hệ điều hành và card mạng của thiết bị Nếu thất bại nó sẽ lấy địachỉ IP public thông qua STUN server Nếu vẫn thất bại, lưu lượng đượcgửi thông qua TURN server
Trang 162.7 CÁC API TRONG WEBRTC VÀ GIAO TIẾP P2P
Do các đặc điểm cần thời gian thực cao hơn tính tin cậy, nên WebRTC sử dụng các luồng dựa trên UDP
getUserMedia: truy cập vào camera và microphone của người dùng
peerConnection: cung cấp cho người tham gia tạo kết nối trực tiếp với cácpeer khác mà không cần máy chủ trung gian (ngoài tín hiệu), có công dụnggửi và nhận dữ liệu hình ảnh, giọng nói với khả năng cấu hình của giao thứcSRTP(Secure Real Time Protocol), đối với audio và video Nó cũng cung cấpcác phương thức để kết nối đến 1 peer từ xa, duy trì và kiểm soát kết nối &đóng kết nối một khi ta không cần đến nó nữa
dataChannels: cho phép chia sẻ dữ liệu trực tiếp giữa các peers với khả năngcấu hình của giao thức SCTP (Stream Control Transmission Protocol), đối vớinon-audio và video
Signalling là tên gọi của một phương thức, một protocol giúp cho ta tạo đượcliên hệ giữa các peer với nhau Nó cho phép hai điểm cuối (người gửi, ngườinhận hoặc cả hai) trao đổi siêu dữ liệu (metadata), giúp phối hợp liên lạc đểthiết lập cuộc gọi
Công dụng của Signalling:
o Session Control Messages: khởi tạo và chấm dứt một kết nối
o Network Configuration: lấy địa chỉ Public IP và Port
o Media Capabilities: các loại codecs và resolutions cần thiết
WebRTC đã bắt buộc ba codec âm thanh và hai codec video:
o Âm thanh - PCMU (G.711μ), 8.000Hz với một kênh (đơn âm).), 8.000Hz với một kênh (đơn âm)
o Âm thanh - PCMA (G.711a), 8.000Hz với một kênh (đơn âm)
o Âm thanh - Opus chạy ở 48.000Hz với hai kênh (âm thanh nổi)
o Video - VP8
o Video - H.264 / AVC sử dụng Cấu hình đường cơ sở ràng buộc
Để có thể giao tiếp lẫn nhau thông qua trình duyệt web, mỗi trình duyệt củauser phải thực hiện những bước sau đây:
1 Đồng ý để bắt đầu giao tiếp.
2 Biết cách xác định vị trí của đối tượng.
3 Vượt qua an ninh và tưởng lửa bảo vệ.
4 Chuyển giao tất cả các giao tiếp đa phương tiện theo real-time.