Sử dụng các lớp RTP API xây dựng chương trình truyền video bằng ngôn ngữ c

42 1 0
  • Loading ...
1/42 trang

Thông tin tài liệu

Ngày đăng: 15/03/2019, 09:57

Sử dụng lớp RTP API xây dựng chương trình truyền Video ngôn ngữ C# Mục lục Mục lục Chương 1: Giới thiệu giao thức TCP UDP Chương 2: Giới thiệu IP Multicast 2.1 Tìm hiểu IP Multicast 2.2 Broadcast Multicast 2.2.1 Các công nghệ Multicast 2.3 Gửi gói tin Multicast thông qua Routers 2.4 Nhóm Multicast 2.5 Địa nhóm – IP Multicast group address 2.6 Ánh xạ địa IP multicast sang địa MAC 10 2.7 Tiến trình chuyển đổi địa Multicast: 11 2.7.2 Địa multicast cho nhóm thường trực .13 2.8 Cây phân phối Multicast (Multicast Distribution Trees ) 15 2.8.1 Soure tree: 15 2.8.2 Share tree: 15 2.9 Multicast Forwarding 17 Chương : Giao thức RTP (Real Time Transport Protocol) 18 3.1 RTP_Real Time Transport Protocol 18 3.2 Hoạt động giao thức: 19 3.2.1 Sender 19 3.2.2 Receiver 19 3.4 Kiến trúc gói liệu 22 Chương 4: RCTP 24 Chương 5: Secure Realtime Transport Protocol (SRTP) 25 5.1 Giới thiệu 25 5.2 Cách mã hoá liệu 25 Chương Các hàm RTP API 27 6.2 Một số hàm RTP 27 6.2.1 Hàm khởi tạo 27 6.2.2 Các hàm gửi, nhận 29 6.2.3 Hàm đóng kết nối 29 6.2.4 Hàm truy cập thông tin thành viên 30 Chương 7: Phân tích chương trình thực nghiệm 32 7.1 Phân tích chương trình 32 7.2 Thiết kế chương trình 33 7.2.1 Thiết kế chức 33 7.2.2 Thiết kế giao diện 33 7.2.3 Thiết kế Module 35 Tài liệu tham khảo 41 Báo cáo tốt nghiệp Phạm Thị Liễu – CT902 1/42 Sử dụng lớp RTP API xây dựng chương trình truyền Video ngôn ngữ C# Chương 1: Giới thiệu giao thức TCP UDP 1.1 Đặc điểm chương trình TCP Trước hết, TCP giao thức kết nối hướng đối tượng Một dòng liệu thiết lập để đảm bảo liệu di chuyển xác từ thiết bị đến thiết bị khác Các ứng dụng dùng TCP khơng lo việc mát liệu có đệm (buffers) TCP phải bảo đảm toàn vẹn liệu Nó lưu trữ tồn liệu gửi đệm có xác nhận bên nhận Tương tự nhận liệu từ mạng, TCP phải giữ đệm để đảm bảo nhận đủ tất thành phần trước đưa liệu vào chương trình Bởi buffer riêng lẻ, liệu chuyển đổi chương trình với chương trình khác máy tính xa điều khiển thay đổi điều mà khơng mong muốn Hình 1: Chuyển đổi liệu TCP Các chương trình dùng TCP hệ điều hành Windows có khả đồng liệu chương trình máy tính với liệu đầu vào từ thiết bị khác Thay gửi lên mạng, liệu nằm đệm khoảng thời gian Nghĩa chương trình nên gửi thêm liệu tới host, thay đổi thêm vào đệm Khi chương tình gửi liệu đến thiết bị xa, gửi tất nội dung đệm, không chia nhỏ liệu mà đệm data1 data2 gộp thành gói để gửi Dữ liệu đưa vào để xác định phần riêng biệt hay gói liệu lớn Khi bạn gửi liệu dạng thông điệp đến thiết bị xa, thiết bị khơng cần thiết nhận số đơn vị thơng điệp Chương trình đặt tất thông điệp riêng biệt vào đệm TCP Tuỳ thuộc vào tốc độ gửi nhận liệu, thơng điệp đẩy vào dòng liệu (data Báo cáo tốt nghiệp Phạm Thị Liễu – CT902 2/42 Sử dụng lớp RTP API xây dựng chương trình truyền Video ngơn ngữ C# stream) Đặc điểm giao thức TCP gây bất ngờ cho nhiều lập trình viên mạng vào nghề Có cách thực là: - Tạo giao thức quy định đồng dần liệu gửi - Thiết kế hệ thống đánh dấu để phân biệt liệu bên dòng liệu Cả cách phải cân nhắc trước làm Hầu hết giao thức Internet dùng TCP FTP giao thức tương tự cung cấp chế dòng lệnh để client gửi thơng điệp dạng dòng lệnh 1.2 Đặc điểm chương trình dùng UDP UDP tạo để giải vấn đề “thông điệp vùng biên” (message boundary) TCP UDP lưu trữ liệu bên ngồi tất thơng điệp gửi từ chương trình Bởi vì, UDP thiết kế riêng biệt không quan tâm đến xác thực liệu Nó khơng dùng đệm liệu để lưu trữ liệu gửi nhận UDP lưu trữ thơng điệp bên ngồi vào gói tin mạng minh hoạ sau: Hình 2: Chuyển đổi liệu theo UDP Khả UDP làm nảy sinh vấn đề khác Bởi UDP khơng đảm bảo việc phân phối liệu Thiết bị gửi gói tin UDP khơng có nghĩa thiết bị nhận nhận gói tin Chương trình hỏng liệu Các bước gửi liệu thông qua UDP:  Gửi liệu đến thiết bị khác  Khởi động timer, đặt khoảng thời gian định trước  Đợi đồng liệu với thiết bị nhận Khi nhận, dừng timer tiếp tục chương trình Báo cáo tốt nghiệp Phạm Thị Liễu – CT902 3/42 Sử dụng lớp RTP API xây dựng chương trình truyền Video ngôn ngữ C# Nếu timer hết hiệu lực trước bạn nhận đồng liệu, quay lại lặp lại bước Sau đặt lại khoảng thời gian mà khơng có phản hồi khơng thể kết nối với thiết bị xa Gửi liệu dùng UDP nhanh dễ dàng phức tạp TCP ta cần tự kiểm tra việc gói tin Báo cáo tốt nghiệp Phạm Thị Liễu – CT902 4/42 Sử dụng lớp RTP API xây dựng chương trình truyền Video ngơn ngữ C# Chương 2: Giới thiệu IP Multicast 2.1 Tìm hiểu IP Multicast - IP Multicast công nghệ truyền thông dựa tảng IP Nó khai thác hiệu mơi trường mạng cách gửi gói tin Một gói tin - chia thành nhiều gói tin gửi đến nhiều người nhận Các nút mạng có trách nhiệm tái tạo chuyển tiếp hướng tới người nhận Giao thức phổ biến dùng mức thấp UDP Nhưng UDP khơng có khả xác thực _ gây lỗi gói tin bị mát Giao thức Realiable Multicast gọi PGM phát triển thêm vào chế tự sửa lỗi phát lại - IP Multicast công nghệ băng thông rộng nhằm làm giảm lưu lượng việc phân phối dòng liệu cho nhiều người Các ứng dụng phổ biến hội nghị truyền hình, học từ xa, truyền thơng… - Các gói tin Multicast chuyển tiếp, phát lại mạng Router có chức PIM (Protocol Independent Multicast) giao thức hỗ trợ multicast khác Hình 3: Multicast Transmission Sends a Single Multicast Packet Addressed to All Intended Recipients - Trong ứng dụng cần băng thông rộng MPEG Video có cách để gửi cho nhiều người lúc IP Multicast Báo cáo tốt nghiệp Phạm Thị Liễu – CT902 5/42 Sử dụng lớp RTP API xây dựng chương trình truyền Video ngôn ngữ C# 2.2 Broadcast Multicast - IP broadcasting dùng thiết bị mạng để gửi gói tin cho thiết bị mạng Bởi giao thức TCP yêu cầu thiết bị phải có kết nối tin cậy Vì khơng thể gửi gói tin broadcast mơi trường TCP Thay vào đó, UDP dùng giao thức có khả gửi gói tin mà khơng cần khởi tạo kết nối đặc biệt - Broadcasting cách để gửi tin tới tất thiết bị subnet có hạn chế bị giới hạn local subnet IP Multicast kế thừa cho phép ứng dụng gửi gói tin tới thiết bị local subnet mạng khác Tính cho phép chương trình kết nối tới nhóm multicast (multicast group) để thực hội nghị diện rộng (wide area conference) - IP multicast dùng địa IP đặc biệt Các dải địa IP tạo nhóm multicast khác Mỗi nhóm multicast bao gồm nhóm thiết bị lắng nghe địa IP Vì gói tin gửi tới đích địa nhóm nên thiết bị phải “lắng nghe địa chỉ” để nhận tin Dải địa 224.0.0.1 đến 239.255.255.255 gọi địa nhóm Multicast 2.2.1 Các cơng nghệ Multicast Có cơng nghệ dùng: - Công nghệ peer – to- peer: tất client gửi thơng điệp đến tất client khác nhóm - Central sever: gửi thơng điệp tới nhóm client a Cơng nghệ Peer – to- Peer Tất client nhóm multicast có quyền ngang Bất kỳ client có khả trao đổi thơng điệp với client khác nhóm Báo cáo tốt nghiệp Phạm Thị Liễu – CT902 6/42 Sử dụng lớp RTP API xây dựng chương trình truyền Video ngơn ngữ C# Hình 4: Mọi client trao đổi thơng điệp với client khác nhóm Hệ thống IP hỗ trợ nhóm multicast theo peer – to – peer cho phép thiết bị mạng gửi nhận gói tin có đích địa nhóm multicast Một số yếu tố mã hố để ngăn chặn client nặc danh nhận liệu nhóm khơng có cách để nhận xác thực từ client liệu b.Central Server Hệ thống dùng thiết bị mạng để điều khiển toàn hoạt động nhóm multicast, gọi central Server Một client muốn kết nối vào nhóm phải xin quyền từ central server Nếu central server từ chối cho client truy cập nhóm khơng gói tin chuyển tiếp tới Như hình sau: Báo cáo tốt nghiệp Phạm Thị Liễu – CT902 7/42 Sử dụng lớp RTP API xây dựng chương trình truyền Video ngơn ngữ C# Hình 5: Central Server điều khiển nhóm Multicast - Lưu ý: hệ thống nhóm multicast theo cơng nghệ central server không hỗ trợ IP Hiện có mạng ATM có hỗ trợ nhóm multicast 2.3 Gửi gói tin Multicast thơng qua Routers Mặc dù gói tin multicast gửi sang mạng khác theo mặc định hầu hết router khơng chuyển tiếp gói tin sang subnet khác Nếu router cho gói tin chuyển tiếp qua gây tràn gói tin Chính IGMP (Internet Group Management Protocol) phát triển để giúp router tránh tắc nghẽn gửi gói tin sang subnet khác Khi thiết bị mạng muốn kết nối vào nhóm multicast, gửi gói tin IGMP tới router cục subnet Gói tin IGMP xác nhận thiết bị địa nhóm thiết bị nhận Nó định tuyến chuyển tiếp gói tin từ nhóm đến subnet thiết bị nhận Hình sau biểu diễn trình xác nhận: Báo cáo tốt nghiệp Phạm Thị Liễu – CT902 8/42 Sử dụng lớp RTP API xây dựng chương trình truyền Video ngơn ngữ C# Hình 6:Quá trình xác thực thành viên router Tương tự, host rời khỏi nhóm multicast, gói tin IGMP khác gửi tới router để thơng báo khơng chuyển tiếp gói tin 2.4 Nhóm Multicast Multicast hoạt động dựa chế nhóm Nhóm khơng có đường biên giới tự nhiên hay địa lý Các host nằm đâu mạng Internet Host muốn nhận liệu nhóm phải “join” vào nhóm Giao thức bên nhận sử dụng IGMP (Internet Group Management Protocol) Host phải thành viên nhóm nhận liệu 2.5 Địa nhóm – IP Multicast group address - IP Multicast group address bên gửi bên nhận dùng để gửi nhận liệu + Bên gửi dùng địa nhóm địa đích cho gói tin + Bên nhận dùng để báo cho mạng chúng nhận gói tin từ nhóm Báo cáo tốt nghiệp Phạm Thị Liễu – CT902 9/42 Sử dụng lớp RTP API xây dựng chương trình truyền Video ngơn ngữ C# Ví dụ: địa nhóm 239.1.1.1 Bên gửi gửi liệu đến địa đích 239.1.1.1 Bên nhận thông báo lên mạng nhận liệu gửi từ địa 239.1.1.1 Bên nhận phải “join” vào địa 239.1.1.1 Giao thức bên nhận dùng để join Internet Group Managenment Protocol - IANA xác định dải địa lớp D làm địa Multicast Độ dài địa nhóm 254.0.0.0 đến 239.255.255.255.Dải địa dùng làm địa nhóm địa đích IP Multicast Địa nguồn gói tin multicast ln địa unicast - Các router switch phải có phương thức để phân biệt traffic dạng multicast với dạng unicast hay broadcast Điều thực thông qua việc gán địa IP, cách dùng địa lớp D từ 224.0.0.0 đến 239.255.255.255 cho multicast Các thiết bị mạng nhanh chóng lọc địa multicast cách đọc bit bên trái địa Bốn bit địa multicast luôn 1110 Không giống dãy địa lớp A,B C, địa lớp D khơng có q trình subnetting Vì có đến lũy thừa 28 địa nhóm multicast trích dẫn từ lớp D Các địa multicast tượng trưng nhóm, khơng tượng trưng cho host - Trong đó, dải địa từ 224.0.0.0 đến 224.0.0.255 dùng cho giao thức mạng Các gói tin mang địa không chuyển tiếp router Chúng để phân đoạn mạng LAN cục có Time To Live (TTL) 2.6 Ánh xạ địa IP multicast sang địa MAC - Làm mà router switch kết hợp địa multicast IP với địa MAC Việc gán địa multicast vào nhóm L3 sang nhóm multicast thường tự động tạo địa multicast lớp Do khơng có chế tương đương với chế ARP, dạng giá trị đặc biệt dành riêng cho địa MAC multicast dùng Các địa bắt đầu 0100.5e Phần 28 bit sau địa multicast IP ánh xạ vào 23bit thấp địa Báo cáo tốt nghiệp Phạm Thị Liễu – CT902 10/42 Sử dụng lớp RTP API xây dựng chương trình truyền Video ngôn ngữ C# Nếu địa multicast, thư viện chuyển tới INADDR_ANY “join” vào nhóm multicast Cách này, chấp nhận gói tin unicast multicast cổng xác định Nếu địa NULL, thư viện chuyển tới INADDR_ANY Nếu cổng 0, thư viện dùng cổng động Số hiệu cổng RTP RTCP phải thay đổi liên tục, thư viện thử ngẫu nhiên cặp cổng cổng định (trên 49152) tìm cặp cổng Nếu khơng tìm báo lỗi - Tất địa viết dạng chuỗi Nó có dạng “A.B.C.D” hostname “machine.domain” Nếu hostname, thư viện chuyển đổi tên sang địa dùng DNS Ngồi số hàm khởi tạo khác  RTPSessionSetBandwidth(): Các gói tin RTCP gửi với tốc độ phụ thuộc vào băng thông phiên truyền Đây thuộc tính phiên RTP Các ứng dụng nên khởi tạo giá trị trước gọi RTPOpenConnection() nhằm tăng tốc độ truyền RTCP Nếu không khởi tạo, tốc độ mặc định 120 kbps  RTPMemberInfoSetSDES(): kiểu gói tin RTCP, SDES chứa thơng tin người dùng Nó bao gồm tên, email vàCNAME người dùng Tuỳ ứng dụng để khởi tạo giá trị phù hợp Thông thường trường CNAME phải khởi tạo trước gọi RTPOpenConnection Tất trường không bắt buộc Mỗi lần địa phiên khởi tạo, hàm RTPOpenConnection() gọi Thơng thường phụ thuộc vào socket nhận Vì vậy, thư viện phải “join” vào nhóm multicast Sau đó, thư viện sẵn sàng chấp nhận gửi gói tin Báo cáo tốt nghiệp Phạm Thị Liễu – CT902 28/42 Sử dụng lớp RTP API xây dựng chương trình truyền Video ngơn ngữ C# 6.2.2 Các hàm gửi, nhận - Hàm RTPSend() dùng để gửi gói tin RTP Nó cần người dùng đệm, độ dài, giá trị trường marker RTP header, số gia tem thời gian context Thư viện lấy từ đệm thêm vào RTP header, thực thao tác cần thiết gửi gói tin Tem thời gian ban đầu số thứ tự lựa chọn ngẫu nhiên Nếu ứng dụng cần để gửi gói tin RTP lưu cấu trúc phân tán, dùng RTPSendVector, dạng tương đương RTPSend - Các gói tin nhận tập hợp nhỏ Để biết, gói tin đọc, tiến trình dừng, poll dùng kỹ thuật khác Thư viện không đề luật này, gửi cho người dùng để xác định xem liệu đọc Để làm điều này,hàm RTPSessionGetRTPSocket RTPSessionGetRTCPSocket dùng cho phép người dùng truy cập vào socket nhận Nó lấy context vào tới socket Socket điền đầy - Khi gói tin nằm socket, ứng dụng gọi hàm RTPReceiver() lấy context, trỏ đệm trỏ tới giá trị length Nó nên khởi tạo phù hợp với đệm Thư viện đọc xử lý gói RTP RTCP Đối với RTCP, thực tất lựa chọn Đối với gói RTP, thư viện cập nhật vài thống kê giá trị - Gói tin đệm thơng thường dùng RTPReceiver chứa header Để truy cập lại vào truờng header payload, hàm RTPGetRTPPacket() dùng Hàm truy cập đệm lấy liệu, trả trỏ gói liệu 6.2.3 Hàm đóng kết nối - Khi ứng dụng khỏi phiên RTP, thực hai thao tác - Hàm RTPCloseConnection gọi Nó đóng tất socket nhận hoạt động gửi gói tin BYE đóng tất socket gửi Nó khơng xố liệu Báo cáo tốt nghiệp Phạm Thị Liễu – CT902 29/42 Sử dụng lớp RTP API xây dựng chương trình truyền Video ngơn ngữ C# lựa chọn RTPCloseConnection chấp nhận chuỗi lý Chuỗi gửi gói BYE Nếu đặt NULL nghĩa khơng có lý - Hàm RTPDestroy dùng để huỷ tất thơng tin phiên Nó lấy lại context giải phóng nhớ 6.2.4 Hàm truy cập thơng tin thành viên Các hàm RTP hỗ trợ truy cập thông tin thành viên phiên Mỗi người dùng xác định số thứ tự thư viện, type peron Khơng giống SSRC gây xung đột, số thứ tự không đổi Thông tin thành viên truy cập thông qua id Các bước: Hàm CallBack: dùng kiện chắn xuất hiện.Như thành viên mới, timeouts,… Hàm dùng để cấp id cho người Nó cho phép ứng dụng truy cập thông tin thành viên dễ dàng ListIterators: cho phép ứng dụng lấy danh sách thành viên nhóm Most Recent: thư viện cung cấp hai hàm để lấy thành viên gửi gói tin RTPvà RCTP RTPMostRecentRTPPerson RTPMostRecentRTCPPerson Local Các thành viên local thường biết lệnh unique identifier Finding Thư viện cung cấp hàm RTPFindMember cho phép ứng dụng lấy id thành viên dựa giá trị cảu trường SDES Hàm chấp nhận context, trường SDES giá trị Nó chấp nhận trỏ tới thành viên để khởi tạo ID cho thành viên Hàm hữu ích để tìm thành viên dựa vào CNAME Khi có nhiều phiên, CNAME người dùng phiên gần cần cho ứng dụng Định danh id dùng để truy cập tới thông tin khác: Báo cáo tốt nghiệp Phạm Thị Liễu – CT902 30/42 Sử dụng lớp RTP API xây dựng chương trình truyền Video ngôn ngữ C# SDES Hàm RTPMemberInforGetSDES() lấy id,trường SDES trỏ đệm Thư viện copy mục SDES vào đệm SR Infor Đây hàm host để lấy thông tin báo cáo gửi thành viên Hàm có dạng RTPMemberInfoGetX với X giá trị (NTPStamp, RTPStamp, PktCount, OctCount), phù hợp với báo cáo Nếu thành viên khơng phải bên gửi, trả lại giá trị zero SSRC Hàm RTPMemberInforGetSSRC(): trả SSRC cho thành viên RR Mỗi thành viên nhóm gửi báo nhận cho bên gửi Thư viện ghi lại tất thông tin báo nhận từ thành viên nhóm Để lấy thông tin từ báo cáo nhận, ứng dụng phải cung cấp id thành viên gửi báo cáo SSRC cho bên gửi Member Status: Hàm RTPMemberInforGetstatus(): trả trạng thái thành viên Báo cáo tốt nghiệp Phạm Thị Liễu – CT902 31/42 Sử dụng lớp RTP API xây dựng chương trình truyền Video ngơn ngữ C# Chương 7: Phân tích chương trình thực nghiệm 7.1 Phân tích chương trình 7.1.1 Phát biểu tốn: - Xây dựng chương trình cho phép truyền hình ảnh từ thiết bị thu Webcam, Camera… tới máy tính khác mạng LAN 7.1.2 Nền tảng thiết bị hệ điều hành: - Máy tính cấu hình từ Pen III trở lên - Hệ điều hành: Win XP - Hệ thống mạng LAN tốc độ 10Mbps trở lên - Tối thiểu Webcam, Camera cài máy gửi 7.1.3 Cơ sở liệu - Dữ liệu đầu vào: hình ảnh từ thiết bị thu - Dữ liệu đầu ra: đồng với liệu đầu vào gần tức thời 7.1.4 Yêu cầu hệ thống Hình ảnh truyền với thời gian thực Chất lượng hình ảnh tốt 7.1.5 Ngơn ngữ lập trình: Dùng ngơn ngữ C# NET có hỗ trợ thư viện thực thi 7.1.6 Các yêu cầu chức hệ thống - Truyền hình ảnh từ máy tính có gắn thiết bị thu hình ảnh đến nhiều máy tính mạng LAN - Quản lý máy tính tham gia vào hệ thống - Xem hình ảnh trước truyền - Tạm thời khơng truyền hình ảnh bên gửi khơng muốn gửi hình ảnh - Bật/ tắt thiết bị thu hình ảnh: Camera… 7.1.7 Yêu cầu giao diện hệ thống Thao tác chức thơng qua nút bấm khung hình hiển thị dễ hiểu Báo cáo tốt nghiệp Phạm Thị Liễu – CT902 32/42 Sử dụng lớp RTP API xây dựng chương trình truyền Video ngơn ngữ C# 7.2 Thiết kế chương trình 7.2.1 Thiết kế chức Stt Chức Kết nối Quản lý hình ảnh Quản lý Camera Đặc tả Khi người dùng muốn truyền hình ảnh phải kết nối tới nhóm có địa IP Multicast Cho phép truyền dừng truyền hình ảnh Để bật/ tắt Camera Kết nối 1.1 Kết nối vào nhóm 1.2 Hiển thị danh sách máy tính kết nối Quản lý hình ảnh 2.1 Xem hình ảnh trước truyền 2.2 Truyền hình ảnh 2.3 Dừng truyền hình ảnh Quản lý Camera 3.1 Bật Camera 3.2 Tắt Camera 7.2.2 Thiết kế giao diện Giao diện chương trình (1): PictureBox Receive_ Hình ảnh nhận Báo cáo tốt nghiệp Phạm Thị Liễu – CT902 33/42 Sử dụng lớp RTP API xây dựng chương trình truyền Video ngơn ngữ C# (2): PictureBox Send_ Hình ảnh thu từ camera (3): TextBox_ Nhập địa nhóm Multicast (4): ListBox_ Chứa danh sách máy tính kết nối vào hệ thống (5): Button _ Kết nối dừng kết nối trường hợp (6): Button _ Gửi hình ảnh thu từ Camera (7): Button_ Dừng gửi hình ảnh (8): Button _ Bật Camera cài đặt thiết bịi gửi (9): Button _ Tắt Camera Các thay đổi giao diện chương trình hoạt dộng Người dùng nhấn nút Kết nối để tham gia vào nhóm.Tên máy tính tham gia hiển thị Danh sách kết nôi TextBox (3) nhập địa IP multicast ListBox (4) hiển thị danh sách máy tính kết nối vào hệ thống Label Button chuyển từ Kết nối sang Ngắt Người gửi hình ảnh nhấn nút Bật Camera - Hình ảnh thu từ Camera hiển thị PictureBox Người gửi nhấn nút Gửi hình ảnh - Hình ảnh từ PictureBox PictureBox đồng với Báo cáo tốt nghiệp Phạm Thị Liễu – CT902 34/42 Sử dụng lớp RTP API xây dựng chương trình truyền Video ngơn ngữ C# Nếu muốn tạm dừng gửi hình ảnh, nhấn nút Dừng gửi - Hình ảnh thu từ Camera hiển thị PictureBox không truyền Nhấn nút Tắt Camera để khơng truyền hình ảnh - PictureBox khơng hiển thị hình ảnh, 7.2.3 Thiết kế Module 1.Kết nối private void btnJoinLeave_Click(object sender, System.EventArgs e) { ep = new IPEndPoint(IPAddress.Parse(text_IP_Multicast.Text), 5000); if (btnJoinLeave.Text == "Kết nối") { HookRtpEvents(); // JoinRtpSession(Dns.GetHostName()); // //Thay đổi giao diện từ Kết nối sang Ngắt btnJoinLeave.Text = "Ngắt"; btnSend.Enabled = true; button2.Enabled = true; text_IP_Multicast.Enabled = false; } else { Cleanup(); // btnJoinLeave.Text = "Kết nối"; btnSend.Enabled = false; text_IP_Multicast.Enabled = true; button2.Enabled = false; } } Bật Camera private void button1_Click(object sender, EventArgs e) { iDevice = 0; OpenPreviewWindow(); } Báo cáo tốt nghiệp Phạm Thị Liễu – CT902 35/42 Sử dụng lớp RTP API xây dựng chương trình truyền Video ngơn ngữ C# private void OpenPreviewWindow() { int iHeight = 320; int iWidth = 200; // Mở hình ảnh picturebox Hwnd = capCreateCaptureWindowA(iDevice.ToString(), (WS_VISIBLE | WS_CHILD), 0, 0, 640, 480, pictureBox_sender.Handle.ToInt32(), 0); // Kết nối với Webcam if (SendMessage(hHwnd, WM_CAP_DRIVER_CONNECT, iDevice, 0) == 1) { // / Đặt mức độ hiển thị / SendMessage(hHwnd, WM_CAP_SET_SCALE, 1, 0); / / Đặt tốc độ hiển thị giây // SendMessage(hHwnd, WM_CAP_SET_PREVIEWRATE, 66, 0); // Khởi động Camera SendMessage(hHwnd, WM_CAP_SET_PREVIEW, 1, 0); / điều chỉnh khung cửa sổ vừa với picturebox / SetWindowPos(hHwnd, HWND_BOTTOM, 0, 0, iWidth, iHeight, (SWP_NOMOVE | SWP_NOZORDER)); } else { / Lỗi kết nối thiết bị DestroyWindow(hHwnd); } } Tắt Camera private void button3_Click(object sender, EventArgs e) { ClosePreviewWindow(); } private void ClosePreviewWindow() { // // Ngắt kết nối với Webcam Báo cáo tốt nghiệp Phạm Thị Liễu – CT902 36/42 Sử dụng lớp RTP API xây dựng chương trình truyền Video ngơn ngữ C# // SendMessage(hHwnd, WM_CAP_DRIVER_DISCONNECT, iDevice, 0); // / Đóng Window / DestroyWindow(hHwnd); } Gửi hình ảnh private void btnSend_Click(object sender, System.EventArgs e) { timer1.Enabled = true; } Dừng gửi hình ảnh private void button2_Click(object sender, EventArgs e) { timer1.Enabled = false; } 7.2.4 Kết chương trình thực nghiệm - Địa điểm: phòng F103 trường ĐH Dân lập Hải Phòng - Cấu hình thiết bị: Máy tính PenIV, Switch Planet 24 port, Lan 100Mbps - Một số hình ảnh thực nghiệm: Báo cáo tốt nghiệp Phạm Thị Liễu – CT902 37/42 Sử dụng lớp RTP API xây dựng chương trình truyền Video ngôn ngữ C# Bước 1: Người dùng nhấn nút Kết nối để tham gia vào nhóm.Tên máy tính tham gia hiển thị Danh sách kết nối Bước 2: Người gửi hình ảnh nhấn nút Bật Camera Bước 3: Người gửi nhấn nút Gửi hình ảnh Báo cáo tốt nghiệp Phạm Thị Liễu – CT902 38/42 Sử dụng lớp RTP API xây dựng chương trình truyền Video ngôn ngữ C# Bước 4: Nếu muốn tạm dừng gửi hình ảnh, nhấn nút Dừng gửi Bước 5: Nhấn nút Tắt Camera để khơng truyền hình ảnh Báo cáo tốt nghiệp Phạm Thị Liễu – CT902 39/42 Sử dụng lớp RTP API xây dựng chương trình truyền Video ngôn ngữ C# Tổng kết Tự đánh giá khoá luận - Trong đồ án này, em nghiên cứư số vấn đề:  Công nghệ Multicast  Giao thức RTP truyền tải hình ảnh thời gian thực a Kết đạt được: - Nghiên cứu sâu công nghệ Multicast giao thức RTP truyền tải hình ảnh thời gian thực - Xây dựng thành cơng chương trình có tính ứng dụng cao nhiều lĩnh vực như: giáo dục, hội nghị truyền hình… b Vấn đề tồn tại: - Cần tìm hiểu thêm C# để xây dựng thêm nhiều tiện ích chương trình - Giao diện chương trình đơn giản, tính chuyên nghiệp chưa cao Hướng phát triển đề tài - Tích hợp thêm Chat Voice, truyền Desktop… đáp ứng tốt cho hệ thống hội nghị truyền hình - Có thể thương mại hố sản phẩm Báo cáo tốt nghiệp Phạm Thị Liễu – CT902 40/42 Sử dụng lớp RTP API xây dựng chương trình truyền Video ngôn ngữ C# Tài liệu tham khảo 1.Richard Blum _ C# Network Programming _ ISBN:0782141765_2003 2.http://www.csharphelp.com 3.http://www.codeproject.com 4.http://www.itgate.com.vn 5.http://www.cs.columbia.edu/irt/software/rtplib Báo cáo tốt nghiệp Phạm Thị Liễu – CT902 41/42 Sử dụng lớp RTP API xây dựng chương trình truyền Video ngơn ngữ C# Báo cáo tốt nghiệp Phạm Thị Liễu – CT902 42/42 ... – CT902 13/42 Sử dụng lớp RTP API xây dựng chương trình truyền Video ngơn ngữ C# tồn c c IANA dành riêng địa để đảm bảo tính tồn c c địa Bằng c ch dùng giá trị 233 cho octet c ch dùng ASN cho... nhận chưa nhận Báo c o tốt nghiệp Phạm Thị Liễu – CT902 26/42 Sử dụng lớp RTP API xây dựng chương trình truyền Video ngôn ngữ C# Chương C c hàm RTP API 6.1 Giới thiệu chung -RTP Library cung c p... Thị Liễu – CT902 23/42 Sử dụng lớp RTP API xây dựng chương trình truyền Video ngơn ngữ C# Chương 4: RCTP RCTP (Real-time Transport Control Protocol)là giao th c hỗ chợ cho RTP cung c p thôngtin
- Xem thêm -

Xem thêm: Sử dụng các lớp RTP API xây dựng chương trình truyền video bằng ngôn ngữ c , Sử dụng các lớp RTP API xây dựng chương trình truyền video bằng ngôn ngữ c

Gợi ý tài liệu liên quan cho bạn

Nhận lời giải ngay chưa đến 10 phút Đăng bài tập ngay