2 Các chuẩn và công nghệ cho ứng dụng Video Conference
2.6 Công nghệ RTC (Realtime Communication)
2.6.1 Sơ lược về RTC Client.
RTC Client API cho phép xây dựng các ứng dụng dùng để thiết lập cuộc gọi giữa các chế độ PC – PC , PC – điện thoại hoặc điện thoại – điện thoại, ngoài ra nó cũng có thể dùng để thiết lập các phiên dùng để nhắn tin ngắn trên mạng Internet. Cả hình ảnh và âm thanh đều có thể thiết lập trong phiên PC – PC , trong các phiên khác vì giới hạn của hạ tầng mạng nên điều này vẫn chưa thể thực hiện. Ngoài ra, trong phiên PC – PC còn có thể sử dụng thêm các dịch vụ gia tăng như : cung cấp các thông tin về tính sẵn sàng truyền thông, nhận cuộc gọi, gửi tin nhắn khi ở chế độ không sẵn sàng (chế độ offline),
RTC được thiết kế để cho phép các nhà phát triển có thể cung cấp các giải pháp hỗ trợ việc truyền thông thời gian thực ở chế độ ngang hàng cũng như truyền thông theo cơ chế thông qua server.
RTC được thiết kế theo mô hình COM, cung cấp các giao diện và các phương thức dùng để tạo các cuộc gọi giữa các thực thể, gửi tin nhắn, chia sẻ ứng dụng, bảng trắng … , RTC đã được phát triển qua 3 phiên bản : 1.0, 1.2 và 1.3, trong đó phiên bản 1.2 hiện đang được sử dụng phổ biến, phiên bản 1.3 nâng cấp một số tính năng cao cấp của phiên bản 1.2.
2.6.2 Kiến trúc của RTC Client.
Kiến trúc hiện thời của RTC Client được tham chiếu theo phiên bản 1.2 hiện đang được sử dụng. Các thành phần cũ trong phiên bản 1.0 vẫn tồn tại trong phiên bản 1.2 và có bổ sung một số tính năng mới.
Hình 6 : Kiến trúc RTC Client. Ý nghĩa chính của các đối tượng :
„ Client Object : Đối tượng chính cung cấp các interface cần thiết của thành phần COM dùng để thiết lập và quản lý cuộc gọi.
„ Buddy Group Object : Dùng để tạo các nhóm bạn bè. RTC Client Object IRTCClient IRTCClient2 IRTCClientPresence IRTCClientPresence2 IRTCClientProvisioning IRTCClientProvisioning2 IRTCClientPortManagement IRTCSessionDescriptionManagement IRTCUserSearch IRTCUserSearchResult
User Search Query Object IRTCUserSearchQuery
Buddy Group Object IRTCBuddyGroup
Watcher Object
IRTCWatcher
Profile Object Buddy Group Object
IRTCBuddy2 IRTCBuddy
Presence Device Object IRTCPresenceDevice
IRTCWatcher2 IRTCProfile IRTCProfile2 2 Session Object IRTCSession 2 IRTCSession2 2 IRTCSessionCallControl 2 IRTCPortManager 2
Participant Object IRTCParticipant
IRTCSessionPortManagement 2
„ User Search Query Object : Dùng để tìm kiếm các thông tin về thành viên trên mạng.
„ Presence Device Object : Dùng để lấy các thông tin về khả năng sẵn sàng của thiết bị.
„ Session Object : Đối tượng chính dùng để quản lý, cấu hình các cuộc gọi sau khi đã được thiết lập thành công. Nó cung cấp các thông tin về trạng thái, kiểu media, thông tin về các thành viên …
„ Participant Object : dùng để lấy các thông tin về thành viên trong một phiên nào đó, ví dụ : tên, URI, trang thái hiện thời …
„ Buddy Object : Dùng để lưu trữ và lấy các thông tin liên hệ với bạn bè. „ Watcher Object : Dùng để lưu trữ và lấy các thông tin về trạng thái theo dõi. „ Profile Object : Dùng để lấy các thông tin đã được lưu trữ trên SIP Server về
bản thân thành viên đang yêu cầu.
Các đối tượng : Buddy Group Object, Buddy Group Object, User Search Query Object, Presence Device Object, Buddy Object, Watcher Object và Profile Object chỉ dùng được khi có kết nối với SIP Server, các đối tượng còn lại có thể sử dụng ở chế độ ngang hàng.
2.6.3 Cơ chế hoạt động của RTC Client.
RTC Client có thể hoạt động theo hai chế độ : ngang hàng và client – server. Cả hai chế độ này đều có thể hoạt động trong mạng cục bộ (LAN) hoặc trong mạng Internet.
Ở chế độ ngang hàng, ứng dụng chỉ sử dụng được các tính năng cơ bản : „ Thiết lập phiên liên lạc.
„ Quản lý các thành viên trong phiên.
„ Quản lý các thành phần dữ liệu trong phiên (audio, video, whiteboard).
„ Phải biết địa chỉ hiện thời của thành viên cần liên lạc (địa chỉ vật lý : địa chỉ IP). Ở chế độ client – server, ứng dụng có thể sử dụng thêm các tính năng do server cung cấp ngoài các tính năng cơ bản trên :
„ Liên lạc với các thành viên thông qua địa chỉ logic (do server cung cấp cho mỗi thành viên khi đăng ký), do đó không bị phụ thuộc vào vị trí khi di chuyển địa điểm.
„ Tìm kiếm thông tin về các thành viên.
„ Tạo nhóm, danh sách các mối liên hệ (được lưu trữ trên server vì vậy có thể sử dụng bất cứ đâu).
„ Theo dõi được trạng thái sẵn sàng của các thành viên cũng như của bản thân. „ Có thể cập nhật thông tin cá nhân trên server mỗi khi có sự thay đổi về vị trí sử
2.6.3.1 Ngang hàng
Ứng dụng thực hiện các thao tác cơ bản gồm có : cấu hình cho RTC Client, khởi động phiên, Xử lý sự kiện.
Hình 7 : Cấu hình cho RTC Client
Hình 8 : Khởi động phiên. Ý nghĩa của các sự kiện cần xử lý :
Trạng thái phiên :
„ RTCSS_IDLE : Phiên không hoạt động (khi chưa thực hiện cuộc gọi hoặc đã kết thúc cuộc gọi).
„ RTCSS_INCOMING : Khi có một cuộc gọi tới.
„ RTCSS_ANSWERING : Đang xử lý quá trình trả lời cuộc gọi (chờ việc chấp nhận của người dùng).
„ RTCSS_INPROGRESS : Phiên đang trong trạng thái xử lý nào đó.
„ RTCSS_CONNECTED : Phiên đã được kết nối (khi bên được gọi đã chấp nhận cuộc gọi).
„ RTCSS_DISCONNECTED : Phiên đã kết thúc.
„ RTCSS_HOLD : Phiên đang ở trạng thái chờ.
„ RTCSS_REFER : Phiên đang được chuyển đến cho một thành viên khác (tương tự một thao tác chuyển cuộc gọi).
Khởi tạo RTC Client
Khởi tạo RTC Client
Khởi tạo RTC Client
Danh sách sự kiện Danh sách thiết bị
Thiết lập phiên
Khởi tạo cuộc gọi
Kiểu phiên
Hình 9 : Xử lý sự kiện.
Trạng thái thành viên : cũng tương tự trạng thái phiên nhưng được sử dụng để nhận biết sự thay đổi trạng thái phiên của một thành viên nào đó trong phiên nhiều thành viên.
Tin nhắn :
„ RTCMSET_MESSAGE : Nội dung tin nhắn đang được chuyển đến.
„ RTCMSET_STATUS : Trạng thái nhắn tin của thành viên đang thay đổi (đang gõ hoặc không gõ tin …).
Luồng đa phương tiện :
„ RTCMET_STOPPED : Luồng đa phương tiện đã dừng.
„ RTCMET_STARTED : Luồng đa phương tiện đã bắt đầu.
„ RTCMET_FAILED : Có lỗi.
Thông số thiết bị : Thay đổi cường độ microphone. Thông tin nội bộ :
„ RTCCET_VOLUME_CHANGE : Thay đổi cường độ loa.
„ RTCCET_DEVICE_CHANGE : Thay đổi thành phần thiết bị (vd : dừng đường truyền hình ảnh).
„ RTCCET_NETWORK_QUALITY_CHANGE : Chất lượng mạng thay đổi
(dùng để điều chỉnh chất lượng hình ảnh tương ứng với chất lượng mạng.
„ RTCCET_ASYNC_CLEANUP_DONE : Các giá trị đồng bộ khác đã được hủy
bỏ, sẵn sàng để kết thúc RTC Client.
Trạng thái phiên
Trạng thái thành viên
Tin nhắn
Luồng đa phương tiện
Thông số thiết bị
Sự kiện
2.6.3.2 Client – Server
Ngoài các chức năng cơ bản được thao tác như trong chế độ Ngang hàng, ở chế độ này, ứng dụng có thể thực hiện các chức năng khác như : Đăng nhập vào SIP server, tạo nhóm bạn bè, các mối liên hệ, bổ sung một địa chỉ liên hệ, kiểm tra thông tin về sự hiện diện của ai đó, thay đổi thông tin hiện diện của bản thân trên server …Tương tự như vậy, ứng dụng phải xử lý các sự kiện hỗ trợ các tính năng trên.
Hình 10 : Xử lý sự kiện (tiếp). Ý nghĩa của các sự kiện cần xử lý:
Đăng ký : Phát sinh sau khi ứng dụng đăng nhập thành công vào SIP server.
Bạn bè : Phát sinh khi một thành viên trong danh sách quản lý thay đổi trạng thái xuất hiện.
Nhóm : Khi nhóm được tạo hoặc thay đổi thông tin.
Trạng thái xuất hiện : khi được yêu cầu từ server về trạng thái xuất hiện của bản thân ứng dụng (được yêu cầu từ các thành viên khác).
Chuyển cuộc gọi : Khi phiên được chuyển sang một thành viên khác. Cập nhật thông tin : Khi server yêu cầu cập nhật lại thông tin. Tìm kiếm : Phát sinh khi kết quả tìm kiếm được trả lại bởi server.
Đăng ký
Bạn bè
Nhóm
Trạng thái xuất hiện
Chuyển cuộc gọi
Sự kiện
Cập nhật thông tin
Ứng dụng ngoài mạng NAT Ứng dụng trong mạng IP ngoài Và Cổng P2 IP trong Và Cổng P1 2.6.4 Các chức năng khác
Bảo mật thông tin.
RTC Client cho phép ứng dụng có thể thiết lập chế độ mã hóa thông tin trước khi truyền đi. Các dạng thông tin được bảo mật bao gồm các luồng audio, video và các ứng dụng được chia sẻ bởi các thành viên.
Quản lý cổng.
Ứng dụng RTC Client có thể bị cản trở bởi một Router (có chứa NAT – Network Address Translator) hoặc một firewall trên đường truyền của các gói tin. Điều này sẽ làm ứng dụng bị cô lập với các mạng bên ngoài. Để làm được điều này thì ứng dụng phải thực hiện việc ánh xạ địa chỉ IP và cổng của mạng ngoài với một địa chỉ IP và cổng của mạng nội bộ, khi đó các thành viên ở ngoài mạng có thể kết nối được. Nếu không thực hiện việc ánh xạ thì các gói tin sẽ bị loại bỏ. Do đó RTC Client đã hỗ trợ thành phần này để ứng dụng có thể thực hiện việc ánh xạ một cách dễ dàng. Điều này có thể được minh họa như sau :
Hình 11 : Ánh xạ địa chỉ.
Sau khi thực hiện việc ánh xạ, ứng dụng nằm trong một mạng cục bộ có thể nhận được cuộc gọi từ mạng ngoài, khi đó các gói tin sẽ đi qua cổng P2, thông qua việc ánh xạ của NAT nó sẽ tìm được đưòng đi tới cổng P1 của máy đang được kết nối.
2.6.5 Ưu thế của công nghệ RTC.
RTC Client API thực sự là một công cụ hữu hiệu để xây dựng một chương trình truyền thông, nó cho phép thực hiện rất nhiều loại hình truyền thông : PC – PC, PC – phone, phone – phone và có thể nhắn tin ngắn. RTC Client API cũng hỗ trợ rất nhiều loại hình truyền tin : hình ảnh, âm thanh, tin nhắn, các ứng dụng…
Tất nhiên, để thực hiện được một cuộc truyền thông có truyền đầy đủ cả âm thanh và hình ảnh (theo cả 2 chiều) thì yêu cầu tối thiểu là cả hai đầu cuối phải có : máy quay, microphone và loa. Còn để thực hiện được cuộc gọi từ máy tính (PC) tới điện thoại thì phải được sự hỗ trợ và đồng ý về việc kết nối từ các nhà cung cấp dịch vụ viễn thông. Vì vậy có thể sử dụng RTC Client API để xây dựng hai loại ứng dụng : ứng dụng để bàn và ứng dụng tùy biến.
„ Ứng dụng để bàn : Ứng dụng này cho phép người dùng có thể tương tác, thực hiện việc truyền thông tin thời gian thực cho nhau.
„ Ứng dụng tùy biến : Điển hình của loại ứng dụng này có thể là một Agent thông tin. Agent này sẽ dò theo trạng thái xuất hiện của tất cả các thành viên có trong server mà những thành viên này có nhu cầu được thông báo tin mỗi khi có một sự kiện nào đó xảy ra. Agent này sẽ gửi các thông báo tới các thành viên này mỗi khi có một sự kiện nào đó xảy ra. Một dạng ứng dụng khác là Agent tương tác : loại Agent này chấp nhận các phiên yêu cầu thời gian thực từ các thành viên đã được xác thực và trợ giúp các thành viên này bằng cách sử dụng các thông tin có được trong cơ sở tri thức có sẵn hoặc có thể lưu lại yêu cầu để các thành viên trong hệ thống dịch vụ sẽ trả lời lại sau đó. Cả hai loại hình ứng dụng này thường được triển khai trên hệ thống SIP Server, đóng vai trò như một ứng dụng chạy trên SIP server đó.
3 Xây dựng ứng dụng Video Conference.
3.1 Mô tả chung về ứng dụng.
3.1.1 Mô tả các yêu cầu và tiêu chí của ứng dụng.
Một hệ thống Video Conference có thể được mô tả như sau : hai nhóm A và B có nhu cầu trao đổi thông tin qua mạng (LAN hoặc Internet), loại thông tin có thể là văn bản, âm thanh, hình ảnh, tương tác thời gian thực (chia sẻ ứng dụng, bảng trắng…). Khi đó, các thành phần tối thiểu cần có là :
Phần cứng : thiết bị kết nối mạng (máy để bàn hoặc thiết bị cầm tay), camera (webcam), microphone, loa, các thiết bị ngoại vi khác ….
Phần mềm : phần mềm tương tác, các quy tắc kết nối đã được định trước (các chuẩn, giao thức), một server trung gian để các nhóm có thể kết nối gián tiếp khi cần.
Trong một hệ thống Video Conference tuân theo chuẩn SIP thì các phần tử chỉ gồm có : Client (phần mềm tương tác) và Server. Một đặc điểm của hệ thống này là : Server chỉ đóng vai trò kết nối các phần tử chứ không có vai trò duy trì kết nối giữa các phần tử. Việc duy trì này sẽ được bản thân các phần tử thực hiện trong quá trình tương tác. Do đó các chức năng trao đổi thông tin tập trung chủ yếu ở phần tử Client. Đối với trường hợp các Client kết nối trực tiếp với nhau thì Server là không cần thiết. Hình 12 và Hình 13 minh họa cụ thể cho hai trường hợp này.
Hình 12 : Trao đổi qua Server.
Mạng
Client A Client B
Server
Gọi Trả lời
Hình 13 : Trao đổi trực tiếp.
Mô hình trao đổi qua server đòi hỏi người dùng phải có một tài khoản do server đó quản lý, khi các thành viên có nhu cầu sẽ trao đổi thông qua tài khoản này. Với mô hình trao đổi ngang hàng ( trực tiếp ) thì các thành viên chỉ cần cung cấp địa chỉ IP để có thể kết nối.
Như vậy, một ứng dụng Video Conference phía Client phải đáp ứng được các yêu cầu sau :
o Có khả năng kết nối thông qua một server trung gian.
o Có khả năng kết nối trực tiếp.
o Cung cấp giao diện người dùng hợp lý cho việc trao đổi.
o Cung cấp khả năng tùy biến các thông tin trong quá trình trao đổi.
3.1.2 Phân tích yêu cầu và đưa ra giải pháp kỹ thuật.
Từ các yêu cầu đã đề ra, một ứng dụng Video Conference phía Client tuân theo giao thức SIP sẽ sử dụng các chuẩn sau trong quá trình truyền thông :
o SIP : kết nối các thành viên, tạo lập phiên làm việc.
o SDP : Mô tả chi tiết các nội dung thông tin được sử dụng trong phiên.
o RTP, RTCP : Điều khiển và truyền tải dữ liệu thời gian thực ( hình ảnh, âm thanh ).
o H.261 : nén dữ liệu hình ảnh.
o G.711 : nén dữ liệu âm thanh.
o T.120 : Truyền tải các dữ liệu thông thường ( chia sẻ ứng dụng, bảng trắng ). Để thực thi các chuẩn trên thì công nghệ Realtime Communication phía Client ( sau đây được gọi tắt là RTC Client ) là một lựa chọn hợp lý để phát triển ứng dụng. RTC Client là một thành phần được tích hợp trong môi trường hệ điều hành Windows vì vậy rất thích hợp cho việc phát triển các hệ thống lớn. Nó được cung cấp dưới mô hình COM nên có thể sử dụng được với các ngôn ngữ lập trình hỗ trợ mô hình này.
Trong phạm vi đồ án, em lựa chọn sử dụng bộ công cụ Visual Studio .Net 2003 và ngôn ngữ VB.Net để phát triển ứng dụng.
Mạng
Client A Client B
Trao đổi
3.2 Phát triển ứng dụng trên máy tính PC. 3.2.1 Thiết kế chương trình. 3.2.1 Thiết kế chương trình.
3.2.1.1 Kiến trúc chương trình.
Hình 14 : Kiến trúc chương trình. Ý nghĩa của các thành phần :
o RTC Client API : tập hợp các hàm API được cung cấp dưới dạng mô hình COM. Các hàm này sẽ được xử lý ở mức hệ thống.
o Public Module : Chứa các hàm, hằng số cần thiết để tham chiếu trong quá trình hoạt động.
RTC Client API
Client Core Public Module
User Interface Form
Dialogs Dialogs Dialogs Application System User
o Client Core : thành phần này sẽ thực hiện tất cả các thao tác liên quan đến RTC Client như : khởi tạo, kết thúc, khai báo các thông số cần thiết về thiết bị…, nhận các thông điệp xử lý sự kiện từ RTC Client và chuyển lên để xử lý ở tầng giao diện như cập nhật các thông số cho người dùng…
o User Interface Form : Cửa sổ chính của chương trình, dùng để tương tác với người dùng. Kích hoạt, kết thúc quá trình sử dụng RTC Client. Nhận các thông điệp được chuyển lên từ Client Core và phân phối tới các thành phần tương ứng