22 Báo cáo Đồ Án cơ sở 4 ĐẠI HỌC ĐÀ NẴNG KHOA 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 WEBRTC VIDEOCALL Giảng viên hướng dẫn ThS Nguyễn[.]
Báo cáo Đồ Án sở ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG - - BÁO CÁO ĐỒ ÁN CƠ SỞ ĐỀ TÀI: NGHIÊN CỨU KỸ THUẬT VÀ XÂY DỰNG WEBRTC VIDEOCALL Giảng viên hướng dẫn : ThS Nguyễn Anh Tuấn Sinh viên thực : Võ Văn Nhã Nguyễn Mậu Nhật Tường Lớp : 17IT3 Đà nẵng, tháng năm 2020 Báo cáo Đồ Án sở LỜI MỞ ĐẦU 1 Dưới phát triển không ngừng ngành công nghệ thông tin xu tiến đến cách mạng công nghiệp 4.0 Để đáp ứng nhu cầu việc đơn giản hóa việc giao tiếp, giải pháp hoàn thiện đem đến cho người lợi ích truyền thơng liên lạc Công nghệ WebRTC công nghệ phổ biến Được quan tâm giúp đỡ thầy cô giáo viên hướng dẫn ThS Nguyễn Anh Tuấn chúng em xin cảm ơn Khoa Công nghệ thơng tin nói chung xin cảm ơn thầy Tuấn nói riêng tạo điều kiện cho chúng em có hội tìm hiểu hồn thành tiểu luận, báo cáo WebRTC Trong giới hạn tiểu luận báo cáo kết thúc môn học, nội dung báo cáo trình bày theo yêu cầu Đề tài “xây dựng WebRTC video call” danh mục “Danh sách đề tài đồ án sở 5” Khoa Công Nghệ Thông Tin Truyền Thông - Đại học Đà Nẵng, bao gồm: Chương 1: Mạng ngang hàng(P2P) ứng dụng Chương 2: WebRTC xây dựng WebRTC video call Được giúp đỡ tận tình Thầy giáo hướng dẫn, chúng em hoàn thành nhiệm vụ đề Tuy nhiên, với thời gian kiến thức có hạn, báo cáo chắn chắn nhiều khiếm khuyết, em mong nhận góp ý chân thành Thầy giáo bạn Em xin chân thành cảm ơn! Sinh viên thực Võ Văn Nhã Nguyễn Mậu Nhật Tường Báo cáo Đồ Án sở NHẬN XÉT …………………………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………………………… Báo cáo Đồ Án sở ĐẶT VẤN ĐỀ Cùng với bùng nổ công nghệ, người dùng Internet, nhu cầu giao tiếp, chia sẻ thông tin, trao đổi liệu ngày lớn Về chia sẻ thơng tin liệu, giới có nhiều hình thức với cơng nghệ, giao thức, ứng dụng khác nhau, từ FTP, Email đến hình thức chia sẻ P2P (Peer-to-Peer) Bitorrent, ứng dụng dịch vụ cloud Dropbox, OneDrive, Google Drive… Về giao tiếp thời gian thực có ứng dụng messenger thành cơng người dùng chào đón Skype, Viber, Whatsapp, Line, Hangouts…Tuy nhiên, nhiều lý từ tốc độ, bảo mật an tồn thơng tin đặc biệt tiện dụng, tiếp tục có nghiên cứu để đơn giản hóa việc giao tiếp, chia sẻ liệu, hỗ trợ người dùng cách nhanh mà khơng địi hỏi phải thao tác nhiều hay cài đặt thêm plugin ứng dụng máy Cụ thể hơn, mong muốn sử dụng trình duyệt không để lướt web, check mail mà công cụ hỗ trợ tất nhu cầu từ chia sẻ file đến giao tiếp thời gian thực từ lâu nhen nhóm thực 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-time communication, gọi WebRTC, mục đích tạo khả giao tiếp thời gian thực trình duyệt Đến WebRTC thiết kế để tích hợp với hệ thống truyền thông VoIP, SIP client khác nhau, chí mạng PSTN WebRTC tiếp tục phát triển, tổ chức tiêu chuẩn giới bàn thảo để chuẩn hóa giao thức, APIs trình duyệt để hỗ trợ WebRTC WebRTC vendor trình duyệt lớn hỗ trợ việc phát triển, đảm bảo trình duyệt kết nối trực tiếp với thực yêu cầu thời gian thực giao tiếp Điều mở giai đoạn Web, thực mang Web đến với giới viễn thông Báo cáo Đồ Án sở CHƯƠNG 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 gọi Peer-To-Peer bắt đầu xuất từ năm 1999 thu hút quan tâm giới công nghệ thông tin năm gần Đặc biệt, việc áp dụng mơ hình P2P việc xây dựng ứng dụng chia sẻ file (file sharing), video call, điện thoại tảng Internet (Internet-based telephony) dã đạt nhiều thành công - Hiện nay, ứng dụng P2P chiếm khoảng 50% (thậm chí 75%) băng thơng Internet - Các ứng dụng kiểu mạng là: Napster,Skype, BitTorrent, v.v 1.1.2 Định nghĩa - Mạng ngang hàng kiểu mạng thiết kế cho thiết bị có chức khả thiết bị - Mạng P2P khái niệm trạm (client) hay máy chủ (server) mà có khái niệm nốt (peers) đóng vai trị client server Hình abc Mơ hình mạng ngang hàng (P2P) Báo cáo Đồ Án sở - Mạng ngang hàng hệ thống phân tán đặc biệt tầng ứng dụng, cặp điểm nút giao tiếp với thông qua giao thức định tuyến tầng mạng ngang hàng Mỗi điểm nút giữ đối tượng liệu nhạc, ảnh tài liệu, v.v… Mỗi điểm nút truy vấn tới đối tượng cần từ điểm nút khác thơng qua kết nối logic tầng mạng ngang hàng 1.1.3 So sánh mơ hình Client-Server mơ hình Peer-To-Peer: a Ưu điểm: Client-Server - Tốc độ truy cập nhanh - Khả mở rộng cao - Hoạt động với loại ứng dụng - Sử dụng với ứng dụng chia sẻ CSDL - Đáng tin cậy (có server riêng) Mức độ an toàn cao - - P2P Không cần Server riêng, nốt chia sẻ tài nguyên Khi mạng mở rộng khả hoạt động hệ thống tốt Rẻ Dễ cài đặt bảo trì Thuận lợi cho việc chia sẻ file, máy in, CD_ROM v.v… b Nhược điểm: Client-Server - Cần Server riêng (nghẽn cổ chai) - Đắt - Phức tạp việc bảo trì, trì hoạt động mạng P2P - Chậm - Không tốt cho ứng dụng CSDL - Kém tin cậy 1.1.4 Mục đích ứng dụng mạng P2P a Mục đích: Mạng ngang hàng hoạt động chủ yếu dựa vào khả tính tính tốn băng thơng máy tham gia không tập trung vào số nhỏ server trung tâm mạng thông thường Tất máy mạng tham gia đóng góp tài nguyên, bao gồm băng thơng, lưu trữ khả tính tốn nên nhiều máy tham gia khả mạng mạnh b Ứng dụng: Sự đời mạng ngang hàng tạo cách thức quản lí cho hàng loạt lĩnh vực ứng dụng như: giao tiếp (communication), chia sẻ file (flie sharing), băng thông (bandwidth), vấn đề lưu trữ (storage), chu trình xử lí (processor cycles) Báo cáo Đồ Án sở CHƯƠNG WEBRTC VÀ XÂY DỰNG WEBRTC VIDEO CALL 2.1 TỔNG QUAN WebRTC nỗ lực để xây dựng framework mở có khả giao tiếp audio video thời gian thực, biến trình duyệt web thành tảng cho giao tiếp người với người Giao tiếp thời gian thực trình duyệt web có trứớc nhiên phải cài đặt phần mềm bên thứ ba lên trình duyệt web WebRTC mang lại hỗ trợ giao tiếp thời gian thực từ bên trình duyệt web nhà phát triển web sử dụng cách tự thông qua JavaScript API tiêu chuẩn Điều mang lại giao tiếp thời gian thực tính cho web, thúc đẩy đổi WebRTC (Web Real-Time Communications) tập hợp hàm lập trình dùng cho việc liên lạc thời gian thực video, âm loại liệu khác WebRTC giúp gọi điện video trình duyệt mà khơng cần đăng kí tài khoản, khơng cần cài thêm plugin phức tạp, ngồi chúng xài để phát triển game chơi trực tiếp trình duyệt nhiều loại ứng dụng khác WebRTC gì? , người ta dùng trở ngại hữu với chuẩn 2.2 SƠ LƯỢC LỊCH SỬ CỦA WEBRTC Ý tưởng phát triển WebRTC nhóm kỹ sư chịu trách nhiệm cho Google Hangouts đưa từ tận năm 2009 Vào thời gian đó, để truyền tải video, hình ảnh web người ta thường phải xài đến Flash Nhóm kỹ sơ Hangouts lại khơng muốn sử dụng công nghệ này, họ bắt đầu tự làm chuẩn riêng cho Đến năm 2010, Google thâu tóm hai cơng ty On2 Global IP Solutions (GIPS) để lấy công nghệ truyền liệu thời gian thực làm tảng cho WebRTC sau Vào tháng 5/2011, Google mắt dự án nguồn mở dành cho việc giao tiếp thời gian thực trình duyệt với nhau, từ lúc dự án mang tên WebRTC Đến 27/10/2011, W3C mắt nháp WebRTC Tháng 11/2011, Chrome 23 mắt, trở thành trình duyệt có tích hợp WebRTC từ bên WebRTC tiếp tục phát triển chưa hồn thiện cách thức Báo cáo Đồ Án sở 2.3 KHÁI NIỆM WEBRTC WebRTC không sản phẩm hay hàm API Nó tập hợp nhiều hàm lập trình viên sử dụng cho nhiều mục đích khác Có hàm để làm việc đơn giản đòi quyền truy cập vào webcam microphone máy tính, có hàm phức tạp để thiết lập kết nối hai người dùng với nhau, có hàm cịn dùng để chia sẻ hình với người khác Và có hàm để hai người gọi video cho nhau, chức "nổi tiếng" WebRTC tính đến thời điểm Tuy nhiên, tất hàm lập trình nằm API có điểm chung vô quan trọng: chúng thực thi hầu hết tác vụ theo thời gian thực Đó lý chữ Real-Time xuất tên hàm Và khơng dùng cho việc gọi video hai trình duyệt mà người ta cịn làm nhiều chuyện khác, miễn chuyện có liên quan đến việc làm cho hai nhiều người dùng liên lạc với Trên trang web mình, WebRTC cho biết họ hỗ trợ thức Google, Mozilla, Opera nhiều đơn vị khác Mục đích cuối dự án nhằm "mang lại ứng dụng phong phú, chất lượng cao chạy theo thời gian thực phát triển lập trình viên cho trình duyệt, tảng di động, thiết bị Internet of Things, cho phép tất bọn chúng liên lạc với thông qua giao thức chung" Để sử dụng hàm lập trình WebRTC, lập trình viên xài nhiều loại ngơn ngữ lập trình quen thuộc: viết trang web họ quyền xài JavaScript, làm app cho Android dùng Java, viết cho iOS dùng Objective-C, cịn viết app cho Windows dùng C++ Gọi điện cho trình duyệt Chrome Android, khơng cần cài thêm Bên cạnh đó, CU-RTC-Web phần mở rộng Microsoft "cống hiến" cho WebRTC Nó viết tắt cho cụm từ Customizable, Ubiquitous Real Time Communication over the Web Giải thích thêm đóng góp mình, Microsoft cho biết tính "tùy biến" nằm chỗ ứng dụng phản hồi theo thời gian thực với chất lượng đường truyền Ví dụ, tốc độ mạng bị giảm đi, lập trình viên lệnh cho ứng dụng web chuyển sang dùng kênh âm thay cho kênh hình ảnh, chí ngừng hoạt động đến tín hiệu tốt trở lại Cịn thuộc tính "mọi lúc nơi" (Ubiquitous) có nghĩa người dùng giao tiếp với bạn bè mặc cho trình duyệt thiết bị sử dụng khác CU-RTC-Web hoạt động tốt sở hạ tầng mạng để đảm bảo tính tương thích cao Báo cáo Đồ Án sở 2.4 KIẾN TRÚC CỦA WEBRTC Kiến trúc tổng quan webRTC sau: Hình 2.1 Kiến trúc WebRTC Có lớp riêng biệt (distinct layers): Browser developers quan tâm đến WebRTC C++ API thành phần cốt lõi sâu Voice Engine, Video Engine, Transform Hay dễ hiểu âm thanh, video kết nối mạng Web App developers quan tâm tới Web API Báo cáo Đồ Án sở 2.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 developer bên thứ với video audio chat, xây dựng dựa Web API để kết nối thời gian thực 2.5.2 Web API Một API sử dụng 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 xây dựng bời việc sử dụng lại component từ libjingle, không yêu cầu sử dụng giao thức xmpp/jingle Transport: cung cấp chức kết nối với thành phần khác tham gia WebRTC (STUN, TURN, ICE ) Session: đóng vai trị điều khiển hoạt động ứng dụng 2.5.5 RTP Stack Một network stack cho RTP (Real Time Protocol) 2.5.6 STUN/ICE Một thành phần cho phép gọi sử dụng STUN ICE để thiết lập kết nối thông qua loại mạng khác 2.5.7 Session Management Một lớp session trừu tượng (abstracted session layer) cho phép thiết lập gọi lớp quản lý 2.5.8 VoiceEngine VoiceEngine framework cho audio media chain, từ card âm tới mạng Báo cáo Đồ Án sở 2.5.9 iSAC / iLBC / Opus iSAC: Một băng tần rộng (wideband) băng tần siêu rộng (super wideband) audio codec cho VoIP streaming audio iSAC sử dụng tần số 16 kHz 32 kHz ví dụ thương xuyên với adaptive biến bitrate 12 - 52kbps Codec thiết bị chương trình máy tính có khả mã hóa giải mã dịng liệu tín hiệu Từ "codec" từ kết hợp cụm từ sau: 'Compressor-Decompressor', 'Coder-Decoder', 'Compression/Decompression algorithm' Các codec mã hóa dịng liệu tín hiệu để truyền tải, lưu trữ, bảo mật giải mã để xem sửa đổi Các codec thường sử dụng giải pháp hội nghị truyền hình streaming media Một máy quay biến đổi tín hiệu sang tín hiệu số, sau chuyển qua nén video để truyền tải tín hiệu số Một thiết bị nhận chuyển tín hiệu qua giải nén video, sau thiết bị biến đổi từ tín hiệu số sang tín hiệu để thể nội dung Một giải nén âm biến đổi tín hiệu âm sang tín hiệu số để truyền tải Một thiết bị nhận biến đổ tín hiệu số trở lại tín hiệu thơng qua giải nén âm để phát lại nội dung iLBC: Một narrowband speech codec cho VoIP streaming audio Sử dụng tần số kHz với bitrate of 15.2 kbps cho 20ms khung 13.33 kbps cho 30ms khung Định nghĩa IETF RFCs 3951 3952 Opus: hỗ trợ biến bitrate mã hóa từ kbit/s tới 510 kbit/s, khung size từ 2.5 ms tới 60 ms Được định nghĩa IETF RFC 6176 NetEQ cho Voice 10 Báo cáo Đồ Án sở 2.5.10 NetEQ Một đệm jitter động thuật toán che giấu lỗi sử dụng để che giấu tác động tiêu cực jitter mạng gói Giữ độ trễ thấp tốt trì chất lượng giọng nói cao 2.5.11 Acoustic Echo Canceler (AEC) The Acoustic Echo Canceler phần mềm dựa thành phẫn xử lý tín hiệu xóa Trong real time, acoustic cho kết từ voice chạy tới mircrophone hoạt động 2.5.12 Noise Reduction (NR) Noise Reduction component phần mềm dựa thành phần xử lý tín hiệu, nhằm loại bỏ loại tiếng ồn kết hợp với VoIP (Hiss, fan noise, etc…) 2.5.13 VideoEngine VideoEngine framework video media chain cho video, từ camera tới mạng, từ mạng tới hình 2.5.14 VP8 Video codec từ dự án WebM Nó phù hợp với RTC thiết kế cho độ trễ thấp (low latency) 2.5.15 Video Jitter Buffer Jitter Buffer động cho video Giúp che giấu ảnh hưởng jitter packet bị tồn chất lượng video 2.5.16 Image enhancements Ví dụ xóa tiếng ồn video từ ảnh quay webcam 11 Báo cáo Đồ Án sở 2.6 CÁC THÀNH PHẦN KẾT NỐI TRONG WEBRTC Hình 2.3 Kết nối webRTC Tải FULL (31 trang): https://bit.ly/3EfzQ4e Dự phòng: fb.com/TaiHo123doc.net Firewall: hệ thống an ninh mạng, dựa phần cứng phần mềm, sử dụng quy tắc để kiểm soát traffic vào, khỏi hệ thống, kiểm soát truy cập đến nguồn lực mạng thơng qua mơ hình kiểm sốt chủ động Nó hoạt động rào chắn mạng an tồn mạng khơng an tồn NAT (Network Address Translation): thường thay đổi địa thường địa cục (IP Private) kết nối mạng thành địa công cộng (IP Public) máy mạng LAN đặt IP Private IP private khơng tồn ngồi Internet 12 Báo cáo Đồ Án sở STUN (Simple Traversal Of UDP Through NAT): máy chủ xài NAT (behind NAT) STUN server giúp cho client biết địa IP Port mà thiết bị NAT sử dụng Từ đó, giúp cho peer lấy địa peer khác (IP nào, cổng mấy, NAT loại gì) Port cổng ứng dụng nằm Firewall hay router Thông tin sử dụng để thiết lập giao tiếp UDP host mà nằm sau NAT router Giao thức STUN định nghĩa FRC 5389 (FRC 5389 cung cấp phương tiện cho điểm cuối để xác định địa IP cổng phân bố NAT tương ứng với địa IP, có tác dụng kiểm tra kết nối chuyển tiếp gói hai điểm cuối) - Nhược điểm: khơng support Symmetric NAT (NAT có nhiều loại) - Symmetric NAT NAT port kết nối đến địa đích khác TURN (Traversal Using NAT Relay): giống STUN nhiên TURN hỗi trợ giao thức TCP làm giao thức truyền tải, bổ sung cho nhược điểm STUN Dữ liệu thay gửi trực tiếp tới peer peer gửi liệu tới TURN server TURN server đóng vai trị trung gian vận chuyển gói tin Tải FULL (31 trang): https://bit.ly/3EfzQ4e - Ưu điểm: Dự phòng: fb.com/TaiHo123doc.net + Nâng cao chất lượng dịch vụ + Đảm bảo an tồn thơng tin truyền dẫn - Nhược điểm: + Chi phí sử dụng lớn sử dụng lưu lượng băng thông lớn (chất lượng full HD hay video HD) ICE (Interactive Communication Establishment): Là giao thức dùng để thiết lập phiên media dựa UDP qua NAT cách nhanh - ICE tìm đường tốt để kết nối peer, thử tất khả kết nối cách song song lựa chọn đường hiệu - Đầu tiên cố gắng tạo kết nối cách sử dụng địa thu từ hệ điều hành card mạng thiết bị Nếu thất bại lấy địa IP public thông qua STUN server Nếu thất bại, lưu lượng gửi thông qua TURN server 13 Báo cáo Đồ Án sở 2.7 CÁC API TRONG WEBRTC VÀ GIAO TIẾP P2P Do đặc điểm cần thời gian thực cao tính tin cậy, nên WebRTC sử dụng luồng dựa UDP getUserMedia: truy cập vào camera microphone 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 peer khác mà khơng cần máy chủ trung gian (ngồi tín hiệu), có cơng dụng gửi nhận liệu hình ảnh, giọng nói với khả cấu hình giao thức SRTP(Secure Real Time Protocol), audio video Nó cung cấp phương thức để kết nối đến peer từ xa, trì kiểm sốt kết nối & đóng kết nối ta khơng cần đến dataChannels: cho phép chia sẻ liệu trực tiếp peers với khả cấu hình giao thức SCTP (Stream Control Transmission Protocol), non-audio video Signalling tên gọi phương thức, protocol giúp cho ta tạo liên hệ peer với Nó cho phép hai điểm cuối (người gửi, người nhận hai) trao đổi siêu liệu (metadata), giúp phối hợp liên lạc để thiết lập gọi Công dụng Signalling: o Session Control Messages: khởi tạo chấm dứt kết nối o Network Configuration: lấy địa Public IP Port o Media Capabilities: loại codecs resolutions cần thiết WebRTC bắt buộc ba codec âm hai codec video: o Âm - PCMU (G.711μ), 8.000Hz với kênh (đơn âm) o Âm - PCMA (G.711a), 8.000Hz với kênh (đơn âm) o Âm - Opus chạy 48.000Hz với hai kênh (âm nổi) o Video - VP8 o Video - H.264 / AVC sử dụng Cấu hình đường sở ràng buộc Để giao tiếp lẫn thơng qua trình duyệt web, trình duyệt user phải thực bước sau đây: Đồng ý để bắt đầu giao tiếp Biết cách xác định vị trí đối tượng Vượt qua an ninh tưởng lửa bảo vệ Chuyển giao tất giao tiếp đa phương tiện theo real-time 14 8090568 ... luận, báo cáo WebRTC Trong giới hạn tiểu luận báo cáo kết thúc môn học, nội dung báo cáo trình bày theo yêu cầu Đề tài ? ?xây dựng WebRTC video call” danh mục “Danh sách đề tài đồ án sở 5” Khoa Công. .. sharing), băng thông (bandwidth), vấn đề lưu trữ (storage), chu trình xử lí (processor cycles) Báo cáo Đồ Án sở CHƯƠNG WEBRTC VÀ XÂY DỰNG WEBRTC VIDEO CALL 2.1 TỔNG QUAN WebRTC nỗ lực để xây dựng framework... …………………………………………………………………………………………………………… Báo cáo Đồ Án sở ĐẶT VẤN ĐỀ Cùng với bùng nổ công nghệ, người dùng Internet, nhu cầu giao tiếp, chia sẻ thông tin, trao đổi liệu ngày lớn Về chia sẻ thông tin liệu, giới có