CHƯƠNG I. TỔNG QUAN VỀ ĐỀ TÀI -...
Transcript of CHƯƠNG I. TỔNG QUAN VỀ ĐỀ TÀI -...
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VIỆT – HÀN
ĐỒ ÁN CƠ SỞ 4
ĐỀ TÀI: TÌM HIỂU VỀ MEDIA SEVER: KURENTO MEDIA SEVER (KMS)
Sinh viên thực hiện : HOÀNG VĂN BÌNH NGUYỄN THỊ THANH TÂM Giảng viên hướng dẫn: ThS. PHAN TRỌNG THANH Lớp : 18IT5
Đà Nẵng, tháng 12 năm 2020
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VIỆT – HÀN
ĐỒ ÁN CƠ SỞ 4
TÌM HIỂU VỀ WINDOW MEDIA SEVER : KURENTO MEDIA SEVER (KMS)
Đà Nẵng, tháng 12 năm 2020
MỞ ĐẦU
Word Wide Web (WWW hay Web) là hệ thống được biết đến rộng rãi nhất được truy cập qua Internet. Hơn nữa, đối với đa số người dung sử dụng Internet, từ “Internet” là tương đương với Web. Đối với họ, Internet là những gì bạn truy cập được thông qua trình duyệt Web. Hai yếu tố này liên kết với nhau hơn nữa tại vì sự phát triển các tính năng và dịch vụ web cung cấp có tác động đến các thành phần khác của hệ sinh thái Internet, ví dụ các hệ thống khác, các nhà cung cấp dịch vụ, doanh nghiệp và người sử dụng. Vì lý do đó, sự phát triển của web là một thành phần quan trọng trong sự phát triển của bản thân Internet.
Ban đầu các trang web, cũng như các trình duyệt web – giao diện để truy cập web – chỉ có dạng văn bản đơn giản. Sau đó, một trong những cột mốc quan trọng đầu tiên trong sự phát triển của web là sự ra đời của trình duyệt web Mosaic, trong đó có một giao diện người dung hiển thị cả đồ hoạ và văn bản, nó trở thành phổ biến trong các tài liệu trên web. Sau đó, sự phát triển trong các trình duyệt web hiện đại và các công nghệ hỗ trợ đã mang các nội dung đa phương tiện lên web. Video và audio, hình ảnh tĩnh và hình ảnh động cùng được sử dụng trong các trang web tương tác, đã trở thành một chuẩn mực.
Tuy nhiên, nội dung đa pương tiện chủ yếu là chỉ là nội dung tĩnh được sản xuất trước đó và phát hành, sau đó được gửi lên web dể đến với mục tiêu người nhận. Web, mặt khác, ngày càng trở nên một nền tảng cho truyền thông, thúc đẩy bởi sự gia tang của các mạng xã hội, một địa điểm nơi con người có thể hiện bản than và chia sẻ với bạn bè, gia đình các mảnh khác nhau trong cuộc sống của họ. Bất cứ khi nào thông tin liên lạc thời gian thực là cần thiết, nếu không nhờ đến sự trợ giúp của phần mềm bổ sung khác, các trang web chỉ có thể cung cấp tin nhắn tức thời dựa trên văn bản.
Giao tiếp web thời gian thực (Web Real-Time Communications – WebRTC), là một nỗ lực để loại bỏ hạn chế này của web được đoeèi hành bởi một số nhà cung cấp trình duyệt chính (Google, Mozilla , Microsoft, Opera) và các công ty nổi tiếng khác (Cisco, Ericsson, vv). Web RTC là một framework mở các khả năng giao tiếp audio và video thời gian thực, nó biến các trình duyệt web thành một nền tảng truy cập chung để giao tiếp giữa người với người. Trong hội thoại và video thời gian thực không phải là mới với Internet, cho đến nay nó chỉ sử dụng được trong trình duyệt web bằng cách cài đặt them phần mềm của bên thứ ba, chảng hạng như Adobe Flash hoặc Skype plug-in. WebRTC mang lại hỗ trợ giao tiếp thời gian thực cho các trình duyệt web và giúp các nhà phát triển web sử dụng một các tự do thông
LỜI CẢM ƠN
Lời đầu tiên, chúng em xin cảm ơn các thầy cô tại Trường Đại học Công Nghệ
Thông Tin và Truyền Thông Việt Hàn - Đại học Đà Nẵng đã giảng dạy, truyền đạt cho
chúng em những kiến thức nền tảng cơ bản, những kinh nghiệm thực tế, định hướng giúp
đỡ chúng em trong quá trình học tập nghiên cứu tìm hiểu đề tài.
Chúng em xin cảm ơn thầy Phan Trọng Thanh đã trực tiếp hướng dẫn, giải đáp các
vướng mắc và đưa ra những lời khuyên, định hướng phát triển trong học tập và nghiên
cứu quá trình thực hiện triển khai đề tài.
Trong quá trình thực hiện đề tài chúng em đã cố gắng hoàn thành trong phạm vi kiến
thức mình tích lũy và học tập được, tuy nhiên để hiểu hết được các kiến thức đó chúng
em cần phải nổ lực hơn nữa, dành nhiều thời gian nghiên cứu và cố gắng hơn. Trong quá
trình làm đề tài vì kiến thức và kinh nghiệm thực tế còn ít nên chắc chắn không tránh
khỏi những lỗi thiếu sót. Vì vậy chúng em rất mong nhận được sự góp ý chỉ bảo nhiều
hơn từ phía các thầy cô để chúng em có thể phát triển hơn nữa đề tài của mình và làm chủ
kiến thức. Một lần nữa chúng em xin chân thành cảm ơn.
Nhóm thực hiện
NHẬN XÉT(Của giảng viên hướng dẫn)
…………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
……………………………………………………………………………………………………….
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………………………………………………………………………………………………………………
………
Giảng viên hướng dẫn
ThS. Phan Trọng Thanh
MỤC LỤC
CHƯƠNG I. TỔNG QUAN VỀ ĐỀ TÀI............................................................................81. Tên đề tài.....................................................................................................................82. Lý do chọn đề tài.........................................................................................................83. Phương pháp triển khai đề tài......................................................................................84. Kết cấu của báo cáo.....................................................................................................8
CHƯƠNG II: CƠ SỞ LÝ THUYẾT...................................................................................91. Giới thiệu về WebRTC................................................................................................9
1.1. Sơ lược về lịch sử WebRTC.................................................................................91.2. WebRTC là gì?.....................................................................................................91.3. Các phần chính của WebRTC và chức năng của WebRTC API..........................91.4. WebRTC dùng để làm gì ?.................................................................................10
2. Giới thiệu về Kurento................................................................................................102.1. Kurento là gì?.....................................................................................................102.2. WebRTC media servers là gì?............................................................................11
CHƯƠNG III: THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG TRÌNH....................................131. Phân tích yêu cầu.......................................................................................................132. Phân tích các chức năng.............................................................................................133. Chuẩn bị máy cài đặt Ubuntu....................................................................................13
CHƯƠNG IV. TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ..............................................191. Môi trường triển khai.................................................................................................192. Kết quả các chức năng của chương trình...................................................................19
CHƯƠNG V: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN.................................................20
DANH MỤC CỤM TỪ VIẾT TẮT
CHƯƠNG I. TỔNG QUAN VỀ ĐỀ TÀI
1. Tên đề tài
Đề tài: Tìm hiểu Media sever Kurento Media Sever (KMS)
2. Lý do chọn đề tài
Việc giao lưu và kết nối với nhau là điều vô cùng quan trọng dù ở bất kì nơi nào.
Ngày nay, với sự phát triển công nghệ, nhiều thiết bị và nền tảng giúp bạn kết nối với
mọi người dễ dàng hơn ra đời. Một trong những cái tên không thể không nhắc đến đó là
WebRTC. Chắc hẳn nhiều người vẫn còn khá xa lạ với thuật ngữ này.
3. Phương pháp triển khai đề tài
- Tìm kiếm tài liệu liên quan.
- Tìm hiểu về kurento media sever (KMS)
- Định hướng chương trình cần làm.
- Xây dựng chương trình live stream sample
- Kết luận.
4. Kết cấu của báo cáo
- Chương I: Tổng quan về đề tài
- Chương II: Cơ sở lý thuyết
- Chương III: Thiết kế và xây dựng chương trình
- Chương IV: Triển khai và đánh giá kết quả
CHƯƠNG II: CƠ SỞ LÝ THUYẾT
1. Giới thiệu về WebRTC
1.1. Sơ lược về lịch sử 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.
1.2. WebRTC là gì?
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.
1.3. Các 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.
1.4. WebRTC dùng để làm gì ?
WebRTC có thể được sử dụng cho truyền tải video, âm thanh cho đến gửi dữ liệu
theo thời gian thực giữa hai hoặc nhiều thiết bị với nhau mà không nhất thiết phải đi qua
server trung gian.
2. Giới thiệu về Kurento
2.1. Kurento là gì?
Kurento là một máy chủ truyền thông WebRTC và một bộ API khách hàng giúp đơn
giản hóa việc phát triển các ứng dụng video nâng cao cho các nền tảng web và điện thoại
thông minh. Các tính năng của nó bao gồm liên lạc nhóm, chuyển mã, ghi âm, trộn, phát
sóng và định tuyến của dòng nghe nhìn. Kurento cung cấp một khung đa phương tiện
giúp giảm bớt nhiệm vụ xây dựng các ứng dụng đa phương tiện với những tính năng, đặc
điểm sau đây:
Dynamic WebRTC Media pipelines: Kurento cho phép media pipelines tùy
chỉnh được kết nối với các peers WebRTC như trình duyệt web và ứng dụng di động. Các
media pipelines này dựa trên các yếu tố có thể kết hợp như người chơi, máy ghi âm, máy
trộn, v.v … có thể được trộn và kết hợp, kích hoạt hoặc hủy kích hoạt tại bất kỳ thời điểm
nào.
Client/Server Architecture: Các ứng dụng được phát triển với Kurento tuân theo
kiến trúc client/server. Kurento Media Server (KMS) là máy chủ và cung cấp giao diện
WebSocket thực hiện giao thức Kurento, cho phép ứng dụng client để xác định cấu trúc
liên kết pipelines.
Java and JavaScript Client Applications: Trường hợp sử dụng điển hình của
việc triển khai KMS bao gồm một trình duyệt kiến trúc, nơi trình duyệt người dùng tương
tác với máy chủ KMS bằng Máy khách trung gian ứng dụng. Có một số thư viện Kurento
chính thức, hỗ trợ việc sử dụng Java và JavaScript cho ứng dụng client. Các client cho
các ngôn ngữ khác có thể dễ dàng thực hiện theo giao thức WebSocket.
Third party Modules: Kurento Media Server có kiến trúc mở rộng dựa trên các
plugin, cho phép các bên thứ ba để thực hiện các mô-đun có thể được thêm vào đường
ống truyền thông của họ. Điều này cho phép tích hợp phương tiện truyền thông xử lý các
thuật toán cho bất kỳ ứng dụng WebRTC nào, như tích hợp Thị giác máy tính, Công nghệ
thực tế ảo, Video, và phân tích giọng nói. Tất cả cần thiết là tạo ra một yếu tố Kurento
mới và sử dụng nó trong bất kỳ media pipelines hiện có.
2.2. WebRTC media servers là gì?
Thành phần chính của Kurento là Kurento media server (KMS), chịu trách nhiệm
truyền, xử lý phương tiện, ghi âm và phát lại. KMS được xây dựng trên thư viện đa
phương tiện GStreamer tuyệt vời và cung cấp các tính năng, đặc điểm sau :
Các giao thức truyền phát được nối mạng, bao gồm HTTP, RTP và WebRTC.
Truyền thông nhóm (chức năng MCU và SFU) hỗ trợ cả trộn phương tiện và định
tuyến / gửi phương tiện.
Hỗ trợ chung cho các bộ lọc thực hiện thuật toán Thị giác máy tính và Công nghệ
thực tế ảo.
Bộ nhớ phương tiện hỗ trợ các thao tác ghi cho WebM và MP4 và phát ở tất cả các
định dạng được hỗ trợ bởi GStreamer.
Tự động transcoding phương tiện giữa bất kỳ codec nào được GStreamer hỗ trợ,
bao gồm VP8, H.264, H.263, AMR, OPUS, Speex, G.711, v.v.
CHƯƠNG III: THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG TRÌNH
1. Phân tích yêu cầu
Yêu cầu đề tài tìm hiểu về Kurento Media Sever và WebRTC
2. Phân tích các chức năng
Xây dựng chương trình ví dụ về kurento với ứng dụng web live stream sample
3. Chuẩn bị máy cài đặt Ubuntu
Sau khi máy tính đã được cài đặt hệ điều hành Ubuntu thì chúng ta đầu tiên phải cài
đặt Kurento Media Sever (KMS)
1. Chắc chắn rằng GnuPG đã được cài đặt
Dùng lệnh
2. Xác định phiên bản Ubuntu nào được cài đặt trong hệ thống và thêm Kurento
repositrory cấu hình hệ thống
Dùng lệnh
3. Cài đặt KMS
Dùng lệnh
4. Sử dụng command để start KMS
Dùng lệnh
5. Cài đặt
Dùng lệnh
6. Khởi chạy
Dùng lệnh
CHƯƠNG IV. TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ
1. Môi trường triển khai
Chương trình được chạy trên Firefox và chạy demo trên hệ điều hành Ubuntu
2. Kết quả các chức năng của chương trình
CHƯƠNG V: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Bên cạnh HTML5, WebRTC là thứ có thể giúp thay đổi thế giới. Nó sẽ giúp việc liên
lạc giữa người dùng với nhau trở nên dễ dàng hơn, và tất cả mọi thứ đều chỉ cần trình
duyệt mà thôi chứ không cần đến bất kì app hay plugin gì cả. Đây là điều hoàn toàn phù
hợp trong bối cảnh mọi thứ đang dần dần dịch chuyển lên sử dụng công nghệ web. Hãy
tưởng tượng đến một tương lai mà bạn có thể làm mọi thứ, từ chơi game, gọi video cho
đến ghi chú, gọi điện... tất cả đều chỉ cần trình duyệt mà thôi. Hiện Firefox OS cũng đã
làm được một phần những thứ đó rồi. Hi vọng trong tương lai chúng ta sẽ càng khai thác
web một cách hiệu quả hơn nữa để trải nghiệm sử dụng thiết bị di động được dễ dàng
hơn.
Em xin chân thành cảm ơn thầy Phan Trọng Thanh đã tận tình giúp đỡ em hoàn
thiện đề tài này trong suốt quá trình làm đồ án.