BBB là một web conferencing mã nguồn mở, cho phép các trường học hoặc các công ty tạo môi trường lớp học từ xa cho các sinh viên, nhân viên, hoặc tổ chức những cuộc họp thông qua giao diện web. BBB hỗ trợ chia sẽ được nhiều loại tài liệu như: PDF, PPT, DOC, XLS, office 2007, office 2010, JPG… Ngoài ra BBB còn có thể share desktop, thao tác viết bảng, chat, truyền video thông qua Webcam, camera. BBB sử dụng hơn mười thành phần mã nguồn mở như: FreeSwitch, red5, apache MQ, tomcat 6, pdf2swf, nginx, open office, mysql, grails, ghostscript, xuggler, redis and imagemagick…
Khi tham gia các hội nghị thoại thì người xem có thể giơ tay phát biểu ý kiến, trò chuyện với người khác. Nếu là chủ phòng bạn có thể bật tắt những người khác , hoặc đẩy bất kỳ người nào ra khỏi phiên họp, hoặc có thể cho người khác chia sẻ và kiểm soát các tài liệu.
BBB sử dụng cổng 1935 cho RTMP ( stream video), 9123 để chia sẻ desktop (với Xuggler ) ,và cổng 80 cho các máy chủ server Nginx. Bên trong các máy chủ sử dụng Flash Red5 ở cổng 5080 và Java Tomcat6 sử dụng cổng cho giao diện SIP ( SIP sử dụng cổng 6079 : 6099 và 3000 : 3029 cho cổng RTP ) .
Mục tiêu của dự án mã nguồn mở BigBlueButton là cho phép các sinh viên từ xa để có học tập trực tuyến chất lượng cao.
3.3. Các mã nguồn mở sử dụng trong hệ thống BigBlueButton
BBB sử dụng hơn mười hai thành phần mã nguồn mở (FreeSwitch , Red5, apache MQ, tomcat 6, pdf2swf, nginx, open office, mysql, grails, ghostscript, xuggler, XMPP , redis, and imagemagick…. ) với những chức năng khác nhau tạo thành 1 hệ thống Video Conference hoàn chỉnh với các ứng dụng như: chia sẻ video , upload tài liệu ,trao đổi trực tuyến (chat) , chia sẻ voice , hỗ trợ đa ngôn ngữ ….
LUẬN VĂN TỐT NGHIỆP HỆ THỐNG VIDEO CONFERENCE
27
3.3.1 Red5
Red5 là một Flash RTMP (Real Time Messaging Protocol) server mã nguồn mở được viết bằng JAVA, hoàn toàn miễn phí, hỗ trợ:
- Streaming Audio/Video (FLV and MP3) : truyền tải phim ảnh và hình ảnh (hai định dạng được hỗ trợ là FLV và MP3).
- Recording Client Streams (FLV only) : ghi lại các dòng truyền tải từ các máy client (hỗ trợ định dạng FLV).
- Shared Objects : chia sẻ các đối tượng trên server.
- Live Stream Publishing : xuất các dòng dữ liệu (âm thanh, hình ảnh, video) trực tiếp. - Remoting : kết nối từ xa.
Chạy được trên các hệ điều hành mã nguồn mở là tốt nhất. Fedora, Ubuntu, SuSE, OpenSolaris …ngoài ra Red5 còn chạy được trên hệ điều hành Window.
3.3.2. Tomcat6
Chứa các thành phần tầng web dựa trên nền tảng Java Servlet và JavaServer Pages, giúp chạy các ứng dụng java trên web.
Apache Tomcat là một Java Servlet được phát triển bởi Apache Software
Foundation (ASF). Tomcat thi hành các ứng dụng Java Servlet và JavaServer Pages (JSP) từ Sun Microsystems, và cung cấp một máy chủ HTTP cho ngôn ngữ Java thuần túy để thực thi các chương trình lệnh viết bằng ngôn ngữ Java.
Tomcat không nên được hiểu nhầm với các máy chủ HTTP Apache - cái mà dùng để thực thi các câu lệnh viết bằng ngôn ngữ C trên máy chủ HTTP; có 2 máy chủ web được kết nối với nhau. Apache Tomcat cung cấp các công cụ cho việc cấu hình và quản lý, nhưng cũng có thể được cấu hình bởi việc soạn thảo các file cấu hình viết bằng XML.
LUẬN VĂN TỐT NGHIỆP HỆ THỐNG VIDEO CONFERENCE
28
3.3.3. Nginx
Nginx là một máy chủ web (web server), proxy ngược (reserve proxy) và e-mail proxy
(IMAP/POP3) nhẹ, hiệu năng cao, sử dụng giấy phép mở BSD. Nginx có thể chạy trên UNIX, Linux, các dòng BSD, Mac OS X, Solaris và Microsoft Windows. Theo thống kê
của Netcraft, trong số 1 triệu website lớn nhất thế giới, có 6,52% sử dụng nginx. Tại Nga, quê hương của nginx, có đến 46,9% sử dụng máy chủ này. Nginx chỉ đứng sau Apache và IIS (của Microsoft).
Trên thực tế, số lượng webserver dùng Nginx để chạy website là rất ít, thay vào đó người ta sẽ sử dụng Apache bởi vì Apache tỏ ra tốt hơn Nginx trong việc phục vụ các trang web động (dynamic page). Nhưng vì tính đa dụng nên Apache có rất nhiều thành phần “thừa” khiến cho Web Server của chúng ta trở nên chậm chạp.
Nginx quản lý tốt về các trang web động , lượng requet tới webserver nhiều .
3.3.4. MySql
Giới thiệu
MySQL là hệ quản trị cơ sở dữ liệu mã nguồn mở phổ biến nhất thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng. Vì MySQL là cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển, hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh. MySQL miễn phí hoàn toàn cho nên bạn có thể tải về MySQL từ trang chủ. Nó có nhiều phiên bản cho các hệ điều hành khác nhau: phiên bản Win32 cho các hệ điều hành dòng Windows, Linux, Mac OS X, Unix, FreeBSD, NetBSD, Novell NetWare, SGI Irix, Solaris, SunOS, ...MySQL là một trong những ví dụ rất cơ bản về Hệ Quản trị Cơ sở dữ liệu quan hệ sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL).
Chức năng MySQL trong hệ thống BigBlueButton : Chứa bảng users khi đăng nhập. Ƣu điểm
LUẬN VĂN TỐT NGHIỆP HỆ THỐNG VIDEO CONFERENCE
29 - Tính linh hoạt
- Đảm bảo tính nhất quán cho dữ liệu - Tạo khả năng chia sẻ dữ liệu nhiều hơn - Cải tiến tính toàn vẹn cho CSDL - Hỗ trợ giao dịch mạnh - Chế độ bảo mật dữ liệu mạnh - Dễ dàng quản lý - Mã nguồn mở tự do và hỗ trợ 24/7 - Tổng chi phí thấp nhất Nhƣợc điểm: - Hệ quản trị CSDL tốt thì khá phức tạp
- Hệ quản trị CSDL tốt thường rất lớn chiếm nhiều dung lượng bộ nhớ
- Hệ quản trị CSDL được viết tồng quát cho nhiều người dùng thì thường chậm
Trong Hệ thống BigBlueButton ,nhóm sử dụng MySQL Server được cài đặt trên nền Linux Ubuntu Server 10.04
Khái niệm cơ bản về cơ sở dữ liệu (CSDL)
- Cơ sở dữ liệu (database) có thể hiểu là nơi chứa dữ liệu. Có nhiều loại cơ sở dữ liệu khác nhau như cơ sở dữ liệu quan hệ, CSDL hướng đối tượng, CSDL phân tán... Hiện nay, trong phần lớn các ứng dụng, người ta thường sử dụng CSDL quan hệ.
- Trong mô hình CSDL quan hệ, dữ liệu thường được chia thành các bảng có liên quan với nhau.
VD: Ta có 2 bảng:
Bảng 1: Chứa các thông tin về Mã hàng, tên hàng, ngày nhập hàng, giá nhập hàng. Bảng 2: Chứa các thông tin về Mã hàng, ngày bán hàng, giá bán.
VD về một bảng có chứa thông tin người dùng: Bảng này sẽ có tên là NSD, các cột (trường) là: Ma_ND, Ten_ND, Tuoi_ND, Matkhau_ND; trong đó Ma_ND có kiểu nguyên, Ten_ND có kiểu chuỗi, Tuoi_ND có kiểu số, Matkhau_ND có kiểu chuỗi.
LUẬN VĂN TỐT NGHIỆP HỆ THỐNG VIDEO CONFERENCE
30 Cài đặt MySQL Server :
Đăng nhập Ubuntu với tai khoản : root
Cài đặt MYSQL
# apt-get install mysql-server # gedit /etc/mysql/my.cnf
Tại dòng bind-address = 127.0.0.1 và bỏ dấu ” ; ”
$ bind-address = 127.0.0.1 trở thành : bind-address = 127.0.0.1 Restart lại my sql
# /etc/init.d/mysql restart
3.3.5. Grails Web framework dạng Ruby on Rail trên nền Java Dự án Grails được gây cảm hứng từ sự thịnh hành của “Ruby on Rails” – framework đã đem lại nhiều thay đổi mới mẻ trong cách thức lập trình web. Với Ruby on Rails (RoR), những công việc lặp đi lặp lại thường thấy được tự động hóa, một số mô hình và giao diện có thể được tự phát sinh, và môi trường lập trình được hỗ trợ tối đa. Tất cả những điều đó đã nhanh chóng đưa RoR lên một vị trí được trọng vọng trong thế giới programmer.
Với mong muốn có một “RoR” kết hợp được sức mạnh những nền tảng Java kinh điển: Spring, Hibernate, SiteMesh… Peter Ledbrook và đồng nghiệp đã quyết định xây dựng “Groovy on Grails”. Một framework đã dần thành hình và phát triển mạnh mẽ từ đó.
Phiên bản 0.1 của Grails được phát hành vào tháng 3/2006. Đến nay Grails đã lên đến phiên bản 1.3.7 (2/2011). Qua gần 5 năm, tốc độ, sự ổn định của Grails đã được cộng đồng sử dụng thừa nhận và đánh giá cao.
Sức mạnh của Grails có thể tóm gọn lại ở những yếu tố sau:
- Tăng năng suất lập trình: Grails giúp tự động hóa những công việc và các câu truy vấn đơn giản(dynamic finder), hỗ trợ scaffolding, và hệ thống taglib giúp lập trình viên xử lý html một cách rất dễ dàng.
- Giản dị hóa những công nghệ lập trình “sừng sỏ khó nhai” như Spring,
Hibernate : Giúp cho việc học và sử dụng dễ dàng với những ứng dụng đơn giản; mà vẫn đảm bảo tính linh hoạt, khả chuyển của những công nghệ gốc khi cần thiết.
LUẬN VĂN TỐT NGHIỆP HỆ THỐNG VIDEO CONFERENCE
31 - Quen thuộc với lập trình viên Java: lập trình viên có thể lập trình bằng hai ngôn ngữ Groovy và Java, thậm chí trộn chung lẫn nhau chương trình cũng vẫn chạy. Điều này giúp rút ngắn thời gian học Grails cho Java-developer.
- Cộng đồng sử dụng Grails rất tích cực . Mọi vấn đề nảy sinh đều được nhanh chóng thông báo; các phiên bản Grails cũng liên tục được cập nhật để đáp ứng kịp thời các nhu cầu của môi trường công nghiệp.
- Thư viện plug-in phát triển phong phú: Cơ chế plug-in của Grails cho phép người sử dụng có thể dễ dàng mở rộng các tính năng của web-application, đồng thời cũng có thể public các plugin này để chia sẻ với cộng đồng. Ví dụ, cần gửi mail từ server? Chỉ cần cài đặt plugin Mail , cấu hình mail server và thêm 1 dòng code gọi service!
- Groovy: ngôn ngữ lập trình trên nền Java
3.3.6. Redis
Redis là một ứng dụng (open-source) chạy trên máy chủ cho phép lưu trữ và tương tác rất nhanh với các dữ liệu, giúp giải quyết tốt hơn trong một số vấn đề phổ biến
Redis lưu trữ dữ liệu trong bộ nhớ chính nên có khả năng xử lý rất nhanh. Vì vậy có thể sử dụng để giải quyết các vấn đề như:
- Hiển thị các mục mới nhất trên trang chủ - Xóa các bài viết khỏi danh sách
- Sắp xếp bình chọn của người dùng - Thực thi hết hạn cho các bài viết - Đếm số lượt Like, count, view,.. - Queue và Hàng đợi
- Bộ nhớ đệm Cache (Sử dụng tương tự Memcache)
3.3.7. FreeSwitch
FreeSwitch là phần mềm mã nguồn mở và miễn phí, được dùng để tạo ra các sản phẩm thoại và nhắn tin. Thư viện cốt lõi của nó là libfreeswitch có khả năng nhúng và các dự án khác cũng như được sử dụng như một ứng dụng độc lập.
Dự án FreeSwitch được sử dụng đầu tiên vào năm 2006 tại hội nghị ETEL của công ty O'Reilly Media.Trong tháng 6 năm 2007, FreeSwitch được lựa chọn bởi
LUẬN VĂN TỐT NGHIỆP HỆ THỐNG VIDEO CONFERENCE
32 Truphone sử dụng và trong Tháng Tám năm 2007, Gaboogie thông báo rằng nó đã
chọn FreeSWITCH như là nền tảng hội nghị.
FreeSWITCH bao gồm nhiều module cung cấp các ứng dụng : hội nghị, XML- RPC kiểm soát các cuộc gọi trực tiếp, trả lời tương tác thoại (IVR), TTS / ASR (text to speech / automatic speech recognition),hỗ trợ kết nối mạng điện thoại PSTN analogue và mạch kỹ thuật số, thoại qua giao thức IP như SIP, SCCP, H.323, XMPP, GoogleTalk, T.38 và nhiều giao thức khác.
Các ứng dụng sử dụng thư viện FreeSWITCH có thể được viết bằng C / C + +, Python, Perl, Lua, JavaScript bằng cách sử dụng Mozilla SpiderMonkey, Java và Microsoft NET thông qua CLR của Microsoft hoặc thông qua Mono. Trong mỗi trường hợp, FreeSwitch thực hiện kiểm soát cuộc gọi và chức năng IVR cho các lập trình viên sử dụng.
3.3.8. SWFTools
- SWFTools là một command line tool mạnh dùng chuyển đổi một số định dạng media sang định file của Adobe Flash (SWF). Bạn có thể chuyển từ các loại file như PDF, JPEG, PNG, GIF, WAV, AVI… sang loại file SWF.
- Hệ thống Video Conference website cho phép người dùng upload và đọc tài liệu online, vì thế SWFTools sẽ giúp cho mọ người cho upload bất cứ loại tài liệu và chuyển tài liệu về định dạng swf để người dùng chia sẻ và đọc online.
- SWFTools sẽ chuyển tất cả các file do người dùng upload như .doc, .ppt…. về dạng file PDF. Sau đó, mình sẽ tách mỗi trang của file PDF vừa được chuyển đổi ra từng file SWF một.
3.3.9. Open office
OpenOffice.org (OOo) hay gọi tắt là OpenOffice là bộ trình ứng dụng văn phòng miễn phí, mã nguồn mở được xây dựng trên phiên bản StarOffice mã nguồn mở của Sun
Microsystems. OpenOffice có thể chạy trên các hệ điều hành Windows (đòi hỏi phải có Java Runtime Environment), Solaris và Linux. Phiên bản mới nhất của OpenOffice cho phép đọc/ghi các định dạng file củaMicrosoft Office khá hoàn hảo.
LUẬN VĂN TỐT NGHIỆP HỆ THỐNG VIDEO CONFERENCE
33 Các thành phần cơ bản của OOo:
Writer (trình soạn thảo văn bản có tính năng tương tự như Microsoft Word)
Calc (trình bảng tính tương tự như Microsoft Excel)
Draw (trình đồ họa cơ bản, tương tự Microsoft Visio) Impress (trình soạn thảo trình diễn, tương tự PowerPoint) Base (trình quản trị cơ sở dữ liệu, tương tự Microsoft Access)
Math (trình viết công thức toán, tương tự Microsoft Equation Editor)
Bộ văn phòng StarOffice Cơ Bản.
OpenOffice giúp cho hệ thống đọc được các file tài liệu khi upload .
3.3.10.Ghostscript
Ghostscript là một thư viện phần mềm để thao tác với các file Postscript và PDF. Bản quyền của Ghostscript thuộc về Artiflex Software Inc, tuy vậy vẫn
có GPLGhostscript là phần mềm tự do phát hành với giấy phép GPL của GNU. Ghostscript bao gồm:
Một trình thông dịch ngôn ngữ Postscript và định dạng PDF
Một bộ thư viện viết bằng ngôn ngữ C thực hiện các nhiệm vụ cơ bản (hiển thị, nén/giải nén, ...) của các định dạng PS và PDF.
Các thủ tục chuyển đổi qua lại giữa PS và PDF.
3.3.11.Imagemagick
ImageMagick là bộ phần mềm (có thể gọi là thư viện) xử lí các file ảnh. ImageMagick là phần mềm tự do với một giấy phép riêng, tương đương với GPL.
Tên gọi ImageMagick ghép từ Image (hình ảnh) và Magick (đọc giống như Magic nghĩa là phép thuật). ImageMagick nổi tiếng do tương thích với nhiều định dạng ảnh và có giao diện (API) phong phú.
LUẬN VĂN TỐT NGHIỆP HỆ THỐNG VIDEO CONFERENCE
34 ImageMagick có khả năng đọc, ghi, và chuyển đổi nhiều dạng file ảnh
như JPEG, GIF, PNG, TIFF, PDF, PostScript, SVG... (tổng cộng hơn 100 định dạng). Có thể dùng ImageMagick thực hiện các thao tác đơn giản với hình ảnh như: dịch chuyển, xoay hình, lật hình, thu phóng, kéo xiên hình; cũng như hiệu chỉnh màu sắc, thêm các hiệu ứng, hoặc vẽ thêm chữ và các khối hình vào file hình ảnh sẵn có.
Cách dùng ImageMagick hiệu quả nhất là thông qua các câu lệnh được thực hiện trong các ngôn ngữ lập trình. ImageMagick hỗ trợ giao diện lập trình ứng dụng API cho nhiều ngôn ngữ lập trình khác nhau.
3.3.12.XMPP (Extensible Mesaging and Presence Protocal )
XMPP là giao thức mở dựa trên nền tảng XML dùng trong nhắn tin nhanh (instant messaging ) và thông tin hiện diện trực tuyến (presence information ).
Ứng dụng trong hệ thống chat (Trao đổi thông điệp trực tuyến )
3.4. Cấu trúc BigBlueButton
LUẬN VĂN TỐT NGHIỆP HỆ THỐNG VIDEO CONFERENCE
35 BigBlueButton sử dụng Nginx làm web server chạy port 80 . Khi một user đăng nhập , hệ thống sẽ request tới server , sau đó sẽ trả về cho Tomcat chạy các ứng dụng web trên nền Java . Tại bbb-web , hệ thống sẽ xử lý user khi đăng nhập dựa vào bảng dữ liệu user trong MySQL , nếu tồn tại user thì redis sẽ truyền dữ liệu ,thông điệp qua lại giữa bbb- web và bbb-apps để cập nhập user cho hiện thị online và sử dụng các ứng dụng trong bbb- apps sau đó trả ngược lại về Web server hiện thị trên nền web .
Red5 làm nhiệm vụ stream các ứng dụng hiện thị lên web .
..……
Hình 3.4 Mô phỏng hệ thống máy chủ BigBlueButton
Hình 3.5 Thiết bị cần thiết cho các Client và chức năng hệ thống
Máy chủ Server
LUẬN VĂN TỐT NGHIỆP HỆ THỐNG VIDEO CONFERENCE
36 Máy chủ : Hoạt động giống như bộ điều khiển trung tâm MCU (Multi Control Unit)
trong các hệ thống HNTH (Hội Nghị Truyền Hình) chuyên dụng được coi như hạt nhân của hệ thống với các chức năng :
- Khởi tạo phòng và quản lý thành viên.
- Giám sát quá trình hội nghị và kết thúc quá trình hội nghị .
- Tiếp nhận video,tài liệu,trao đổi thông tin từ các Client sau đó xử lý chia sẻ cho các Client khác .
Máy Client :