Tìm hiểu và ứng dụng webrtc để tạo ứng dụng video call 6850016
1. ĐẠI HỌC ĐÀ NẴNG
KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
ĐỒ ÁN CƠ SỞ 4
ĐỀ TÀI: Tìm hiểu và ứng dụng Webrtc để
tạo ứng dụng Video Call
Sinh viên thực hiện : Võ Như Tài
Giảng viên hướng dẫn : TS. Nguyễn Hà Huy Cường
Lớp : 17IT2
1
3. ĐẠI HỌC ĐÀ NẴNG
KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
ĐỒ ÁN CƠ SỞ 4
Tìm hiểu và ứng dụng Webrtc để tạo
ứng dụng Video Call
Đà Nẵng, tháng 1 năm 2020
1
4. MỞ ĐẦU
2
Ngày nay, trong một thế giới thông minh thì sẽ có nhiều nhu cầu đươc
đặt ra hơn, và trong đó chắc chắn sẽ có nhiều nhu cầu có thể giúp cho xã hội con
người vươn tầm lên tầm cao mới.
Là một bước đi mới khác với các đồ án kỳ trước. Lần này nôi dụng của
đồ án sẽ là Video Call – một trong những lĩnh vực được xem như là xu thế phát
triển và nâng cấp trong thời kì hiện đại… Đồ án kỳ này cũng là cũng là một cơ
hội mới để nâng cao kiến thức về lập trinh ứng dụng và tìm hiểu về các API có
trên thế giới
Việc sử dụng phương pháp Web Real-Time Communications tạo ra sự
thuận tiện việc thực hiện mục tiêu của đồ án lần này. Kết hợp với OpenTok để
tạo ra một server cho phép các người dùng có thể trao đổi video với nhau.
Và việc hoàn thành được đồ án 4 học kỳ này cũng không thể thiếu đến sự
giúp đỡ chỉ dẫn tận tình của thầy Nguyễn Hà Huy Cường - giáo viên hướng dẫn.
Người đã tạo điều kiện tốt nhất cho sự hoàn thành đề án này
Thật sự cảm ơn thầy trong thời gian qua đã hướng dẫn, định hướng hướng
phát triển cho chúng em. Chúng em xin cảm ơn!
6. MỤC LỤC
Trang
Contents
Chương 1 Giới thiệu...........................................................................................9
1.1 Tổng quan................................................................................................9
1.2 Phương pháp, kết quả...............................................................................9
1.2.1 Phương pháp......................................................................................9
1.2.2 Kết quả..............................................................................................9
1.3 Cấu trúc đồ án........................................................................................10
Chương 2 Nghiên cứu tổng quan......................................................................11
2.1 Các phương pháp....................................................................................11
2.1.1 Web Real-Time Communications....................................................11
2.1.2 EasyRTC OpenSource.....................................................................12
2.2 Hạn chế, tồn tại của các phương pháp....................................................13
2.2.1 Web Real-Time Communications....................................................13
2.2.2 EasyRTC OpenSource.....................................................................13
2.3 Kết luận..................................................................................................14
Chương 3 Phân tích thiết kế hệ thống...............................................................15
3.1 Mô hình tổng quan của WebRTC...........................................................15
3.1.1 Các giao thức được sử dụng trong WebRTC....................................17
3.1.2 Các API của WebRTC......................................................................20
3.1.3 Bảo mật của WebRTC......................................................................21
3.2 Thiết kế chi tiết.......................................................................................21
Chương 4 Kết luận và Hướng phát triển...........................................................25
4.1 Kết luận..................................................................................................25
4.2 Định hướng phát triển.............................................................................25
4
7. DANH MỤC CÁC BẢNG
Trang
Bảng 2.1 – Bảng so sánh các phương pháp.....................................................13/14
5
8. DANH MỤC HÌNH
Trang
Hinh1 1: Hoạt động của WebRTC........................................................................11
Hinh1 2 : Kiến trúc tổng thể của WebRTC..........................................................15
Hinh1 3: Kiến trúc bên trong của WebRTC.........................................................16
Hinh1 4: Chồng giao thức WebRTC....................................................................17
6
9. DANH MỤC CỤM TỪ VIẾT TẮT
STT Cụm từ Viết tắt
1 Web Real-Time Communication WebRTC
2 HyperText Transfer Protocol HTTP
3 Voice over internet protoco VoIP
4 Real-time Transport Protocol RTP
5 Secure RTP SRTP
6 Application Programming Interface API
7 Session Description Protoco SDP
8 Session Traversal Utilities for NAT STUN
9 Traversal Using Relays around NAT TURN
10 Interactive Communication
Establishment
ICE
11 User Datagram Protocol UDP
12 Transport Layer Security TLS
13 Stream Control Transport Protocol SCTP
14 Internet Protocol IP
7
10. Chương 1 Giới thiệu
1.1 Tổng quan
Trong bối cảnh xã hội ngày càng phát triển, đời sống mỗi con người đều
phát triển mạnh mẽ, các nhu cầu về dịch vụ cũng được nâng cao qua thời gian.
Trong đó, nhu cầu về việc liên lạc - tương tác với nhau ngày được chú ý và
phát triển mạnh mẽ. Theo lịch sử trước năm 1878, con người chủ yếu liên lạc ở
khoảng cách xa với nhau chủ yếu dựa vào bồ câu, và vận chuyển thư bằng người
tuy nhiên phương pháp này rất tốn thời gian và không đảm bảo. Sau năm 1878,
chiếc điên thoại đầu tiên ra đời cho phép truyền âm thanh ở khoảng cách xa với
tốc độ và độ chính xác cao hơn, và đặt nền móng cho việc liên lạc sau này.
Hiện này, theo dòng thời gian ta đã có thể thực hiện một cuộc gọi cách nữa
vòng Trát Đất rất dễ dàng. Tuy nhiên nhu cầu lại đc nâng lên một tầm cao mới,
mọi người đều muốn quan sát theo dõi cuộc sống hằng ngày của người mà họ yêu
thương qua những video trực tiếp , để có thế thấu hiểu hơn về đối phương.
Từ đó, việc phát triển các ứng dụng cho phép thực hiện các cuộc gọi video
luôn là vấn đề được quan tâm. Và để đáp ứng đươc nhu cầu của người người hay
còn có thể gọi là thị trường, cũng như để phục vụ cho quá trình học tập cụ thể là
Đồ án Cơ sở 4, cho nên chúng tôi đã quyết định nghiên cứu và phát triển một ứng
dụng – mô hình để cho mọi người có thể thoải mái liên lạc với nhau , cùng nhau
mang lại niềm vui hạnh phúc.
Ở đây, chúng tôi đang nghiên cứu về WebRTC, là một web API được phát triển
bởi World Wide Web Consortium, khả năng hỗ trợ trình duyệt giao tiếp với nhau
thông qua VideoCall để tạo nên một ứng dụng cho phép thực hiện các cuộc gọi
video
1.2 Phương pháp, kết quả
1.2.1 Phương pháp
Tìm hiểu WEBRTC là gì? Cách thức nó hoạt động như thế nào. Liên kết ra
sao với ngôn ngữ lập trình di động.
Chuẩn bị môi trường làm làm việc bao gồm các thiết bị cần thiết để phục
vụ cho việc lập trình đi động. Lên kế hoạch làm việc cho từng giai đoạn làm việc
để đảm bảo tiến độ dự án.
1.2.2 Kết quả
Đối với một ứng dụng trên thiết bị di dộng thì giao diện là môt phần quan
trọng không thua kém chức năng cho nên kết quả của đề tài lần này sẽ bào gồm:
8
11. - Giao diện thân thiện,thuận tiện, sẵn sàng tương tác hỗ trợ người dùng
khi ứng dụng – hệ thống gặp vấn đề.
- Đảm bào khả năng VideoCall luôn sẵn sàng hoạt động
1.3 Cấu trúc đồ án
- Tìm hiểu và so sanh giữa hai phương pháp WebRTC và EasyRTC
- Hạn chế và lợi ích của từng phương pháp
- Tìm hiểu về OpenTok SDK Android
- Phân tích thiết kệ hệ thống và triển khai:
o Nói rõ đến cách thức hoạt động của phương pháp được chọn
o Xây dựng mô hình hoạt động của ứng dụng.
o Tiến hành lập trình ứng dụng
- Kết luận và hướng phát triển:
o Tổng kết những gì đã đạt được qua quá trình xây dựng ứng dụng
o Nêu ra những hạn chế tồn tại chưa được giải quyết
o Định ra hướng phát triển, khắc phục những hạn chế tồn tại nêu ra
trước đó
-
9
12. Chương 2 Nghiên cứu tổng quan
2.1 Các phương pháp
2.1.1 Web Real-Time Communications
Sơ lượt về 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
Google Hangouts đư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ại khô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
cho mì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 cho
WebRTC về sau.
Vào tháng 5/2011, Google ra mắt một dự án nguồn mở dành cho việc giao tiế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ên WebRTC.
Song song đó, Hiệp hội World Wide Web (W3C) và Hiệp hội Kĩ sư quốc tế
(IETF) cũng đang phát triển một số giao thức để dùng cho việc việc kết nối thời
gian thực, thế nên họ bắt tay nhau tiếp tục hoàn thiện để rồi quyết định kết hợp
chung vào WebRTC.
Đến 27/10/2011, W3C ra mắt bản nháp đầu tiên của WebRTC. Tháng 11/2011,
Chrome 23 ra mắt, trở thành trình duyệt đầu tiên có tích hợp WebRTC ngay từ
bên trong. Và tính đến thời mà mình viết bài này thì WebRTC vẫn còn đang tiếp
tục được phát triển chứ chưa hoàn thiện một cách chính thức.
WebRTC là gì?
10
13. Hinh1 1: Hoạt động của WebRTC
WebRTC là viết tắt của cụm từ Web Real-Time Communication. Là một
web API được phát triển bởi World Wide Web Consortium (W3C), khả năng hỗ
trợ trình duyệt (browser) giao tiếp với nhau thông qua VideoCall, VoiceCall hay
transfer data Peer-to-Peer (P2P) mà không cần browser phải cài thêm plugins hay
phần mềm hỗ trợ nào từ bên ngoài.
WebRTC được ra đời từ năm 2011, ngay sau khi ra đời nó đã đạt được khả
năng tương tác giữa các trình duyệt Chrome và FireFox vào năm 2013 để triển
khai hỗ trợ cho điện thoại di động như Android, WebRTC đã ngày càng thu hút sự
chú ý hứa hẹn thị trường ngày càng phát triển
Ngoài ra theo dự đoán Apple và Microsoft sẽ kết hợp WebRTC trong trình
duyệt của họ và có thể có 7 tỷ thiết bị hỗ trợ WebRTC trong năm 2020. Với tốc
độ tăng trưởng mạnh mẽ việc kiểm tra để có một chiến lược cho các ứng dụng
WebRTC được hiệu quả là cần thiết.
Các thành phần chính của WebRTC và chức năng của WebRTC API ?
Các phần chính của WebRTC bao gồm:
- getUserMedia, cho phép trình duyệt web truy cập vào camera
và/hoặc microphone để lấy dữ liệu hình ảnh âm thanh cho việc
truyền tải.
- RTCPeerConnection dùng để cài đặt videocall/voicecall dùng cho
việc truyền tải.
- RTCDataChannel cho phép trình duyệt chia sẻ dữ liệu peer-to-peer.
WebRTC API bao gồm chức năng:
- getStats cho phép ứng dụng web lấy tập hợp các số liệu thống kê
về các session WebRTC.
11
14. 2.1.2 EasyRTC OpenSource
EasyRTC là một khung được xây dựng dựa trên WebRTC, một tiêu chuẩn
W3C / IETF mới nổi để giao tiếp thời gian thực của âm thanh, video và dữ liệu
giữa các trình duyệt web. WebRTC hỗ trợ chuyển âm thanh, video và dữ liệu trên
cơ sở ngang hàng đặt rất ít tải lên các máy chủ hỗ trợ.
Khung EasyRTC bao gồm thư viện JavaScript phía máy khách hoặc trình
duyệt và máy chủ JavaScript phụ trợ được xây dựng trên đỉnh của node.js. Bởi vì
các thư viện WebRTC được tích hợp vào mỗi trình duyệt, không cần trình cắm
trình duyệt.
Trình duyệt Chrome của Google có hỗ trợ rộng nhất cho API
WebRTC. Opera hiện đang sử dụng cùng một công cụ với Chrome và do đó bắt
chước hành vi của nó. Firefox cung cấp hỗ trợ tuyệt vời cho truyền thông dữ liệu
nhưng chỉ hỗ trợ cơ bản cho các cuộc trò chuyện video (nó thiếu khả năng đặt độ
phân giải camera, lập trình cho phép chia sẻ màn hình hoặc thu thập số liệu thống
kê).
WebRTC có tiềm năng một khi nó được chuẩn hóa hoàn toàn để hỗ trợ trò
chuyện và hội thảo bằng âm thanh và video, trò chơi nhiều người chơi và nhiều
ứng dụng dựa trên âm thanh, video và dữ liệu khác.
Như thường thấy với phần mềm, với sức mạnh đi kèm phức tạp. WebRTC
có một lộ trình học tập có khả năng cản trở việc sử dụng của các nhà phát triển
web. Để che giấu sự phức tạp đó, Priologic đã xây dựng khung EasyRTC.
Một ứng dụng WebRTC thường cần thực hiện hầu hết các bước sau.
- Truy cập vào camera và micrô cục bộ dưới dạng "luồng phương
tiện".
- Thiết lập kết nối đến một máy chủ báo hiệu.
- Bắt đầu một cuộc gọi đến một người trên một trình duyệt khác.
- Kết nối các luồng phương tiện với các thẻ video.
Sử dụng khung EasyRTC, một số bước trong số này có thể được thu gọn
thành một cuộc gọi, đơn giản hóa rất nhiều công việc của nhà phát triển, đặc biệt
nếu nhà phát triển web đang cố gắng hỗ trợ nhiều nền tảng.
Thành phần của EasyRTC OpenSource :
- Một thư viện trình duyệt máy khách được viết bằng JavaScript. Ứng
dụng khách này xử lý tín hiệu và ở một mức độ lớn sẽ cách ly các ứng
dụng khỏi những thay đổi đang diễn ra trong api WebRTC.
12
Tải bản FULL (30 trang): https://bit.ly/3fQM1u2
Dự phòng: fb.com/KhoTaiLieuAZ
15. - Một máy chủ báo hiệu dựa trên Node.js. Node.js chạy trên các nền tảng
nhỏ như một Raspberry Pi lõi đơn (phiên bản đầu tiên) cho các máy
chủ trong đám mây.
Cùng với nhau, hai thành phần này sẽ cho phép bạn viết một ứng dụng hội
nghị video đơn giản hoặc một ứng dụng chia sẻ tệp, v.v ... chỉ trong một vài dòng
mã đơn giản.
2.2 Hạn chế, tồn tại của các phương pháp
2.2.1 Web Real-Time Communications
Như thường thấy với phần mềm, với sức mạnh đi kèm phức tạp. WebRTC
có một lộ trình học tập có khả năng cản trở việc sử dụng của các nhà phát triển
web. Để che giấu sự phức tạp đó, Priologic đã xây dựng khung EasyRTC.
Một ứng dụng WebRTC thường cần thực hiện hầu hết các bước sau.
- Truy cập vào camera và micrô cục bộ dưới dạng "luồng phương
tiện".
- Thiết lập kết nối đến một máy chủ báo hiệu.
- Bắt đầu một cuộc gọi đến một người trên một trình duyệt khác.
- Kết nối các luồng phương tiện với các thẻ video.
2.2.2 EasyRTC OpenSource
Hiện tại, máy chủ EasyRTC chạy trên một cá thể Node.js. Điều đó có nghĩa
là nó bị giới hạn bởi số lượng bộ nhớ và số lượng cổng mà đối tượng node.js có
quyền truy cập. Nó cũng chỉ có thể gửi và nhận tin nhắn rất nhanh. Số lượng
khách hàng mà nó có thể hỗ trợ có thể dao động từ hàng trăm đến hàng nghìn, tùy
thuộc vào nhu cầu ứng dụng của bạn đặt trên máy chủ. Điều này cũng có nghĩa là
máy chủ EasyRTC không mạnh như bạn muốn cho một hệ thống sản xuất. Nếu
máy chủ đang chạy quá trình máy chủ ngừng hoạt động, dịch vụ sẽ thất bại.
2.3 Kết luận
Web Real-Time Communications EasyRTC OpenSource
Là một tập hợp các hàm lập trình Một khung được xây dựng dựa trên
WebRTC
Không cần đăng kí tài khoản Một máy chủ báo hiệu dựa trên Node.js
Còn được dùng để phát triển game chơi Một thư viện trình duyệt máy khách
13
6850016