Khái ni ệ m truy ề n dòng
Truyền dòng là khái niệm mô tả quá trình mà nội dung audio hoặc video được gửi đến nơi nhận, cho phép người nhận tiếp nhận và trải nghiệm nội dung ngay trong lúc truyền tải, mà không cần phải chờ đợi cho đến khi toàn bộ video được truyền xong.
Cơ chế này hoàn toàn khác với cơ chế download file của các giao thức HTTP hay FTP
Truyền dòng cho phép hiển thị video thời gian thực mà không bị giới hạn bởi độ dài video, điều này rất quan trọng khi xử lý các file video lớn hoặc video có độ dài không xác định Trong những trường hợp này, các giao thức như FTP hay HTTP không còn hiệu quả.
Cơ chế truyền dòng đang trở nên phổ biến trong các chương trình truyền hình trực tiếp và hội thảo trực tuyến Nhờ khả năng truyền tải nội dung video và âm thanh qua mạng, chúng ta có được một phương pháp giao tiếp và truy cập thông tin hiện đại và hiệu quả.
Truyền dòng là phương pháp truyền thông tin liên tục, cho phép nội dung audio được phát đi theo thời gian thực Khi bên nhận nhận được dòng thông tin, họ có thể thể hiện ngay nội dung audio, điều này rất quan trọng đối với dữ liệu phụ thuộc thời gian như video và audio Để minh họa, giả sử có hai máy kết nối: một máy truyền với micro để thu âm thanh và một máy nhận với loa Khi sử dụng cơ chế truyền dòng thời gian thực, âm thanh từ phát thanh viên sẽ được thể hiện ngay lập tức trên thiết bị nhận Đối với các tin tức đã được lưu trữ, truyền dòng thời gian thực đảm bảo âm thanh được phát ra giống như khi nó được phát trên máy truyền Môi trường mạng trở nên trong suốt, mang lại cảm giác cho người sử dụng rằng âm thanh được phát ra như thể thực hiện ngay trên máy cục bộ.
Quá trình truy ề n dòng âm thanh
Hình 1.1: Quá trình truyền âm thanh Âm thanh từ nơi phát tới được nơi nhận cần trải qua rất nhiều công đoạn
Về cơ bản, để truyền âm thanh qua mạng ta cần qua các bước sau:
Lấy mẫu là quá trình chia nhỏ nội dung video hoặc audio thành các khối nhỏ để dễ dàng truyền tải qua mạng Đối với dữ liệu audio, việc lấy mẫu diễn ra theo thời gian, nghĩa là sau mỗi chu kỳ lấy mẫu, phần dữ liệu audio tương ứng sẽ được truyền đi Trong khi đó, đối với dữ liệu video, việc lấy mẫu không chỉ diễn ra theo thời gian mà còn theo không gian, trong đó các khung hình được chia nhỏ thành các phần có kích thước phù hợp để thuận tiện cho việc truyền tải.
Khi lấy mẫu, cần đảm bảo rằng các mẫu chứa đầy đủ thông tin cần thiết để khôi phục dữ liệu video hoặc audio cả về không gian và thời gian Việc sử dụng giao thức truyền thông thời gian thực (RTP) giúp tự động hóa quá trình lấy mẫu này.
Bướ c 2: Truyền các mẫu qua mạng :
Việc truyền tải dữ liệu audio và video có thể thực hiện trực tiếp qua các giao diện mạng như Socket hoặc thông qua giao thức cấp cao ở tầng ứng dụng như RTP Thông thường, người dùng sẽ lựa chọn giải pháp sử dụng giao thức truyền dòng thời gian thực nếu nó được hỗ trợ bởi phần cứng và phần mềm Các giao thức thời gian thực có ưu điểm lớn trong việc đồng bộ hóa dữ liệu từ các nguồn khác nhau, đặc biệt là khi truyền âm thanh và hình ảnh cùng một sự kiện, đảm bảo rằng âm thanh phải khớp với hình ảnh tại bên nhận.
Các giao thức điều khiển không chỉ quản lý các thành viên tham gia mà còn đảm bảo chất lượng trong việc phân phối dữ liệu.
Việc sử dụng giao thức truyền thông thời gian thực cho quá trình truyền tải giúp đóng gói các mẫu thành các gói tin đầy đủ thông tin
Bước 3: Nhận và khôi phục gói tin là quá trình ngược lại với bước thứ hai, diễn ra khi dữ liệu dưới dạng gói tin được truyền đến bên nhận Các gói tin này có thể đến từ nhiều nguồn khác nhau và không nhất thiết phải theo thứ tự như khi gửi Bên nhận cần dựa vào thông tin trong từng gói tin để xác định vị trí không gian và thời gian của các mẫu dữ liệu Việc xác định vị trí này rất quan trọng để khôi phục chính xác nội dung video hoặc audio Nếu các dòng dữ liệu không có quan hệ thời gian, nội dung khôi phục có thể được trình diễn ngay Tuy nhiên, nếu có nhiều dòng dữ liệu liên quan về mặt thời gian, cần thực hiện đồng bộ hóa để đảm bảo tính chính xác trong quá trình phát lại.
Việc đồng bộ các dòng dữ liệu là cần thiết khi chúng có mối quan hệ thời gian, như trong việc đồng bộ hình ảnh với âm thanh trong video Thời gian hiển thị của các dòng cần được tính toán phù hợp với nhau Quá trình đồng bộ hóa thường phức tạp và được thực hiện tự động bởi các giao thức truyền thông thời gian thực như RTP Mặc dù thứ tự nhận gói tin có thể khác với thứ tự gửi và có thể có gói tin bị mất, giao thức vẫn phải đảm bảo tính đồng bộ cho các dòng khi được hiển thị tại nơi nhận.
Chương 1 đã giới thiệu tổng quan cho ta biết khái niệm truyền dòng và quá trình truyền dòng audio hay video qua mạng Nó là định hướng cho ta cách thức xây dựng hệ thống truyền âm thanh trong các chương tiếp theo.
Tìm hi ể u m ạ ng 4G
Mạng 4G, hay công nghệ truyền thông không dây thế hệ thứ 4, là một giải pháp kết nối Internet phổ biến hiện nay Công nghệ này cho phép người dùng kết nối Internet mọi lúc, mọi nơi, chỉ cần đăng ký gói cước 4G và nằm trong vùng phủ sóng.
2.1.1 Lịch sử phát triển mạng 4G Để cho ra đời mạng 4G, chúng ta đã trải qua rất nhiều cuộc cách mạng phát triển mạng không đây:
Hệ thống mạng di động thế hệ 1 (1G) đánh dấu sự khởi đầu của công nghệ điện thoại không dây với chức năng cơ bản chỉ là nghe và gọi Xuất hiện vào những năm 1980, 1G sử dụng tín hiệu sóng analog, với các công nghệ nổi bật như NMT ở Bắc Âu, Tây Âu và Nga, AMPS ở Mỹ và Úc, cùng TACS ở Anh Mặc dù 1G mang lại những tiện ích ban đầu, nhưng nó cũng gặp nhiều hạn chế như dung lượng thấp, xác suất rớt cuộc gọi cao, chất lượng âm thanh kém và không có chế độ bảo mật Sự gia tăng số lượng thuê bao đã thúc đẩy nhu cầu nâng cao dung lượng mạng và chất lượng cuộc gọi, dẫn đến việc phát triển hệ thống di động thế hệ thứ 2.
Hệ thống mạng di động thế hệ 2 (2G) là hệ thống thông tin di động số đầu tiên trên thế giới sử dụng kỹ thuật đa truy cập phân chia theo thời gian (TDMA), được phát triển tại châu Âu với tên gọi GSM Sự phát triển nhanh chóng của thuê bao đã khiến hệ thống 2G đáp ứng kịp thời nhu cầu lớn về di động, cung cấp không chỉ dịch vụ thoại truyền thống mà còn cả các dịch vụ truyền dữ liệu và dịch vụ bổ sung khác Tại Việt Nam, hệ thống GSM được triển khai từ năm 1993 và hiện đang được Công ty VMS và GPC khai thác hiệu quả thông qua hai mạng VinaPhone và MobiFone.
Hệ thống mạng di động thế hệ 3 (3G) đánh dấu sự chuyển mình từ thế hệ 2 qua giai đoạn 2,5G, sử dụng công nghệ TDMA và CDMA Các công nghệ này cho phép kết hợp nhiều khe hoặc tần số, bao gồm các mạng như GPRS, EDGE và CDMA2000-lx Ở thế hệ 3, các hệ thống thông tin di động hướng tới việc thống nhất thành một tiêu chuẩn duy nhất, cung cấp tốc độ truyền dữ liệu lên đến 2 Mbit/s Để phân biệt với các hệ thống băng hẹp hiện tại, 3G được gọi là hệ thống thông tin di động băng rộng.
Hệ thống mạng di động thế hệ 4 (4G) bao gồm hai công nghệ tiền thân là Wimax2 (802.11m) và Long Term Evolution (LTE), nhưng chưa đạt tiêu chuẩn 4G với tốc độ truyền tải tối thiểu 100 Megabyte/s khi di chuyển và 1 Gb/s khi đứng yên Wimax2 được phát triển bởi IEEE, trong khi LTE là sản phẩm của 3GPP, một bộ phận trong liên minh các nhà mạng cung cấp dịch vụ GSM Cả hai công nghệ này đều sử dụng ăng-ten tiên tiến để cải thiện khả năng tiếp nhận và truyền tải, nhưng hoạt động trên các băng tần khác nhau.
2.1.2 Đặc điểm mạng 4G Được phát triển từ thế hệ mạng 3G, mạng 4G có rất nhiều đặc điểm:
Tốc độ cao là một trong những yếu tố nổi bật và dễ nhận thấy nhất của mạng 4G, giúp cải thiện trải nghiệm người dùng Theo định nghĩa của Liên minh Viễn thông, mạng 4G mang lại tốc độ truyền tải dữ liệu nhanh chóng, đáp ứng nhu cầu sử dụng ngày càng tăng của người tiêu dùng.
Thế giới (ITU), 4G có thể tăng tốc độ tải về của thiết bị lên tới 100 Mbps khi di chuyển, và đạt xấp xỉ 1 Gbps trong điều kiện đứng yên
Mạng 4G là một hệ thống không dây tiên tiến với công suất cao, mang lại trải nghiệm kết nối di động băng rộng vượt trội so với các thế hệ trước Với khả năng phục vụ lên đến 300 người dùng cùng lúc, mạng 4G LTE vượt trội hơn nhiều so với mạng 3G, chỉ có thể hỗ trợ khoảng 60 đến 100 người dùng.
Công nghệ 4G mang lại tốc độ truyền dữ liệu cao hơn, giúp các ứng dụng đa phương tiện như video trên YouTube và gọi video hoạt động mượt mà hơn Đặc biệt, 4G giảm độ trễ xuống mức tối thiểu, rất phù hợp cho các dịch vụ cần phản hồi thời gian thực.
Hiệu suất 4G vượt trội hơn 3G nhờ sử dụng phổ tần cao hơn, cho phép truyền tải dữ liệu với dung lượng lớn hơn Công nghệ này áp dụng các chương trình mã hóa thông minh, giúp nén nhiều bit dữ liệu hơn trong mỗi hertz trên phổ tần số, mang lại hiệu quả truyền tải tối ưu hơn.
Mạng 4G hứa hẹn mang đến sự phát triển vượt trội trong công nghệ thông minh, với khả năng tự động thực hiện các công việc mà không cần can thiệp từ con người Được thiết kế theo kiến trúc đồng đẳng và sử dụng mạng lưới IP, 4G có khả năng tự cấu hình để tối ưu hóa việc truyền tải thông tin, phục vụ nhanh chóng cho nhiều người dùng cùng lúc Trong khi mạng 3G thường bị tê liệt do sự cố mất điện hoặc hỏng thiết bị, mạng 4G nhờ vào các cảm biến và phần mềm tiên tiến có thể tự động điều chuyển lưu lượng qua các trạm phát khác cho đến khi sự cố được khắc phục.
Giao thức TCP/IP
TCP/IP không chỉ là một giao thức mà là một tập hợp các giao thức, thường được gọi chung là Giao thức TCP/IP Tên gọi này phản ánh rằng nó bao gồm hai giao thức chính: TCP (Giao thức điều khiển truyền) và IP (Giao thức Internet) Ngoài ra, còn có một số giao thức khác liên quan như FTP, HTTP, và SMTP.
Hình 2.1: Giao thức TCP/IP
TCP/IP có bốn lớp, trong đó lớp Application chứa các giao thức như SMTP cho email, FTP để truyền file và HTTP cho duyệt web Mỗi chương trình tương tác với các giao thức Application khác nhau tùy thuộc vào mục đích sử dụng của nó.
Sau khi xử lý yêu cầu, giao thức trong lớp Application sẽ giao tiếp với giao thức lớp Transfer, thường là TCP Lớp này nhận dữ liệu từ lớp trên, chia thành các gói (Packet) và gửi xuống lớp Internet Đồng thời, lớp này cũng sắp xếp thứ tự các gói dữ liệu nhận được từ mạng và kiểm tra tính toàn vẹn của chúng để đảm bảo không có gói nào bị hỏng.
Trong lớp Internet, giao thức IP (Internet Protocol) nhận gói dữ liệu từ lớp Transport và thêm thông tin địa chỉ ảo, bao gồm địa chỉ của máy tính gửi và máy tính nhận Những địa chỉ ảo này được gọi là địa chỉ IP Sau khi hoàn tất, gói dữ liệu sẽ được chuyển xuống lớp Network Interface, nơi dữ liệu được gọi là Datagram.
Lớp Network Interface chịu trách nhiệm nhận và gửi các gói dữ liệu mà lớp Internet xử lý, tùy thuộc vào kiểu mạng mà người dùng sử dụng Hiện nay, hầu hết các máy tính đều sử dụng mạng Ethernet, bao gồm các loại tốc độ khác nhau, trong đó mạng Wireless cũng được xem là một dạng Ethernet Bên trong lớp Network Interface, có các thành phần như LLC (Logic Link Control), MAC (Media Access Control) và Physical, được sắp xếp từ trên xuống dưới Các gói dữ liệu được truyền qua mạng được gọi là Frame Để các máy tính có thể trao đổi dữ liệu, TCP/IP áp dụng mô hình truyền thông 4 tầng, còn được gọi là Mô Hình DoD (Mô hình của Bộ Quốc Phòng).
Mỹ) Các tầng trong mô hình này là (Theo thứ tự từ trên xuống):
Tầng Ứng Dụng (Application Layer)
Tầng Giao Vận (Transport Layer)
Tầng Liên Mạng (Internet Layer)
Tầng Giao Diện Mạng (Network Interface Layer)
2.2.1.1 Tầng Giao Diện Mạng (Network Interface Layer)
Tầng Giao Diện Mạng đóng vai trò quan trọng trong việc truyền tải và nhận dữ liệu qua các phương tiện truyền dẫn Tầng này bao gồm các thiết bị phần cứng như Card Mạng và Cáp Mạng, đảm bảo kết nối hiệu quả trong hệ thống mạng.
Card mạng, chẳng hạn như card Ethernet, có một địa chỉ MAC (Media Access Control) gồm 12 ký tự HEX (ví dụ: 00-18-37-03-C0-F4) Địa chỉ MAC đóng vai trò quan trọng trong việc xác định địa chỉ và truyền tải dữ liệu trong mạng.
2.2.1.2 Tầng Liên Mạng (Internet Layer)
Tầng giao diện mạng đóng vai trò quan trọng trong việc gán địa chỉ, đóng gói và định tuyến dữ liệu Bốn giao thức chính trong tầng này bao gồm:
IP (Internet Protocol): Có chức năng gán địa chỉ cho dữ liệu trước khi truyền và định tuyến chúng tới đích.
ARP (Address Resolution Protocol): Có chức năng biên dịch địa chỉ IP của máy đích thành địa chỉ MAC
ICMP (Internet Control Message Protocol): Có chức năng gửi đi các thông báo lỗi chỉ ra một dịch vụ có tồn tại hay không
IGMP (Internet Group Management Protocol): Có chức năng điều khiển truyền đa hướng (Multicast)
2.2.1.3 Tầng Giao Vận (Transport Layer)
Có trách nhiệm thiết lập phiên truyền thông giữa các máy tính và quy định cách truyền dữ liệu Hai giao thức chính trong tầng này gồm:
Giao Thức Gói Người Dùng (UDP) là một giao thức truyền thông phi kết nối, không đảm bảo độ tin cậy trong việc truyền dữ liệu Các ứng dụng sử dụng UDP thường chỉ gửi những gói dữ liệu nhỏ, với độ tin cậy phụ thuộc vào từng ứng dụng cụ thể.
TCP (Giao thức điều khiển truyền tải) là một giao thức cung cấp các kênh truyền thông hướng kết nối, đảm bảo việc truyền dữ liệu một cách tin cậy Khác với UDP, TCP thường truyền các gói tin có kích thước lớn và yêu cầu phía nhận xác nhận về các gói tin đã được nhận.
2.2.1.4 Tầng Ứng Dụng (Application Layer)
Tầng giao thức này bao gồm nhiều giao thức phục vụ cho các ứng dụng người dùng, được sử dụng để định dạng và trao đổi thông tin Một số giao thức phổ biến trong tầng này bao gồm:
DHCP (Dynamic Host Configuration Protocol): Giao Thức Cấu Hình
DNS (Domain Name System): Hệ Thống Tên Miền
SNMP (Simple Network Management Protocol): Giao Thức Quản Lý
FTP (File Transfer Protocol): Giao Thức Truyền Tập Tin
TFTP (Trivial File Transfer Protocol): Giao Thức Truyền Tập Tin Bình Thường
SMTP (Simple Mail Transfer Protocol): Giao Thức Truyền Thư Đơn
2.2.2.1 Các thành phần của địa chỉ IP
Giống như các giao thức lớp mạng khác, địa chỉ IP có vai trò quan trọng trong việc định tuyến các IP datagram đến đích Mỗi thiết bị trên mạng TCP/IP được gán một địa chỉ IP 32 bit duy nhất, bao gồm hai phần chính: chỉ số mạng và chỉ số host.
Chỉ sổ mạng dùng để nhận dạng các mạng Phần này do trung tâm liên mạng (Internet) phân phối nếu đây là một mạng thành viên của Internet
Chỉ số host dùng để nhận dạng host Phần này được ấn định bởi nhà quản lý mạng địa phương.
2.2.2.2 Khuôn dạng địa chỉ IP Địa chỉ IP 32 bit được phân thành 4 nhóm, mỗi nhóm 8 bit gọi là một octet Các octet đặt cách nhau bằng một dấu chấm và được thể hiện dưới dạng thập phân Mỗi bit trong octet cổ một trọng số khác nhau (128,64,32,16,8,4,2,1 ) Giá trị thấp nhất của một octet là 0 (8 bit đều có giá trị 0) và giá trị cao nhất của một octet là 255 (giá trị tất cả các bit là 1) Hình sau thể hiện một khuôn dạng cơ bản của địa chi IP:
Hình 2.2: Khuôn dạng địa chỉ IP
2.2.2.3 Các phiên bản IP Địa chỉ IP được phát triển qua nhiều phiên bản, tuy nhiên có những phiên bản chỉ dùng để thử nghiệm Hai phiên bản được ứng dụng trong thực tế là IPv4 (IP phiên bản 4) sử dụng 32 bit dữ liệu và IPv6 (IP phiên bản 6) sử dụng 128 bit dữ liệu Trong bài này, chúng ta sẽ dùng thuật ngữ IP để nói về IPv4, vốn được sử dụng chủ yếu hiện nay trên thế giới. Địa chỉ IPv4 thường được viết theo dạng gồm bốn nhóm số thập phân, ngăn cách nhau bằng dấu chấm Do 32 bit chia đều cho bốn nhóm số, nên mỗi nhóm sẽ gồm tám bit dữ liệu, thường gọi là một oc-tet, nghĩa là bộ 8-bit nhị phân Với số bit này, giá trị của mỗi oc-tet sẽ gồm 2 8 = 256 giá trị nằm trong khoảng từ 0 (tám bit toàn 0) đến 255 (tám bit toàn 1)
Giao th ứ c RTP
2.3.1 Tổng quan giao thức RTP
Giao thức truyền tải thời gian thực (RTP) là tiêu chuẩn định dạng gói tin dùng để truyền tải tập tin, video và âm thanh qua mạng IP RTP được ứng dụng phổ biến trong các hệ thống truyền thông và giải trí, đặc biệt trong các dịch vụ streaming media như gọi điện thoại, ứng dụng và các dịch vụ phát âm thanh, cũng như các tính năng push-to-talk trên nền tảng web.
RTP hoạt động trên giao thức TCP, phù hợp cho các ứng dụng yêu cầu tính thời gian thực và độ tin cậy cao trong chất lượng dịch vụ Giao thức TCP đảm bảo rằng các gói tin không bị mất trong quá trình truyền tải.
RTP được phát triển bởi Nhóm công tác về Giao thông Audio-Video của
Lực lượng đặc trách về kỹ thuật Internet (IETF) và được công bố lần đầu tiên vào năm 1996 dưới dạng RFC 1889, được thay thế bởi RFC 3550 vào năm 2003.
Tiêu đề giao thức RTP bao gồm một phần tiêu đề cố định có mặt trong mọi gói RTP, cùng với một phần tiêu đề mở rộng phục vụ cho các mục đích cụ thể.
Hình 2.3: Tiêu đề cốđịnh gói RTP Theo cấu trúc trên:
Version 2 bit: Trường version để chỉ phiên bản của giao thức Có 3 phiên bản 0,1,2 Phiên bản hiện tại được sử dụng là 2
Trường P (Padding) 1 bit được thiết lập để thêm một hoặc nhiều octets P vào cuối gói tin, không bao gồm trong payload Octet P cuối cùng chỉ ra kích thước tổng cộng của các octets đã thêm Việc bổ sung octets P nhằm phục vụ cho các thuật toán mã hóa yêu cầu kích thước gói cố định hoặc để cách ly các gói RTP khi nhiều gói thông tin được truyền trong cùng một đơn vị dữ liệu của giao thức lớp dưới.
X (Extension) 1 bit: Nếu trường X được thiết lập thì phần header cố định phải được liên kết với phần header mở rộng
CC (CSRC count) 4 bits: Chứa các giá trị của trường CSRC ID trong header cốđịnh
M (Marker) 1 bit: Được sử dụng ở lớp ứng dụng để xác định một profile
Trường PT (Payload Type) trong RTP có độ dài 7 bit, cho phép xác định và phân loại đến 128 loại payload khác nhau, phục vụ cho việc truyền tải âm thanh và video Mỗi loại mã âm thanh hay video được ký hiệu bằng một mã PT cụ thể, ví dụ như PCM (0), GSM (3), LPC (7), G.722 (9), MPEG Audio (14), G.728 (15), JPEG (26), H.261 (31), MPEG1 (32), và MPEG2 (33) Nếu trong quá trình truyền tải
Sequence Number 16 bits: Trường mang số thứ tự của các gói tin RTP
Số thứ tự trong gói tin RTP tăng lên 1 sau mỗi lần gói tin được gửi đi, giúp máy thu phát hiện mất gói và khôi phục trình tự chuỗi gói tin Giá trị khởi đầu của trường này là một giá trị ngẫu nhiên, ví dụ như khi máy phát nhận được luồng gói tin RTP có khoảng trống giữa các gói.
2 hai số thứ tự 86, 89 thì máy phát sẽ biết rằng gói tin có số thự tự 87,
Trường timestamp 32 bits trong gói tin RTP xác định thời điểm lấy mẫu của octet đầu tiên, được đo bằng một đồng hồ tăng đều đặn và tuyến tính để hỗ trợ đồng bộ và tính toán độ jitter Tần số đồng hồ này không cố định và phụ thuộc vào định dạng của payload, với giá trị khởi đầu được chọn ngẫu nhiên Một số gói tin RTP có thể chia sẻ cùng một giá trị timestamp nếu chúng được phát đồng thời về mặt logic, như các gói trong cùng một khung hình video Nếu các gói dữ liệu được phát ra cách nhau bằng khoảng thời gian đều, giá trị timestamp sẽ tăng đều đặn; ngược lại, trong những trường hợp khác, giá trị này sẽ tăng không đều.
SSRC (Synchronization Source Identifier) là một trường 32 bit trong gói tin RTP, chỉ ra nguồn phát gói tin từ các thiết bị như micro, camera hoặc RTP mixer Giá trị SSRC được chọn ngẫu nhiên và trong một phiên kết nối RTP, có thể có nhiều nguồn phát khác nhau, tạo ra nhiều dòng gói tin RTP Máy thu sẽ nhóm các dòng gói tin cùng nguồn để phát lại tín hiệu thời gian thực một cách đồng bộ.
Trường CSRC (Contributing Source List) có khả năng chứa từ 0 đến 15 mục, với kích thước 32 bit CSRC được sử dụng để xác định các nguồn đóng góp payload cho gói tin, cho phép tối đa 15 nguồn tương ứng với 15 mục Giá trị của CSRC được cung cấp bởi trường CC và được chèn vào từng mục thông qua các bộ trộn (mixer).
Cơ chế mở rộng của RTP cho phép các ứng dụng riêng lẻ của giao thức này thực hiện các chức năng mới bằng cách thêm thông tin vào phần tiêu đề của gói Thiết kế này cho phép một số ứng dụng có thể bỏ qua một số ứng dụng khác, trong khi vẫn sử dụng được một phần nào đó của chúng.
Hình 2.4: Tiêu đề mở rộng gói RTP
Nếu bit X trong phần tiêu đề cố định có giá trị 1, phần tiêu đề mở rộng sẽ được thêm vào sau phần tiêu đề cố định, sau danh sách CSRC (nếu có).
Trong phần mở rộng, 16-bit đầu tiên chứa số đếm các từ 32-bit được thêm vào, ngoại trừ từ 32-bit đầu tiên dùng để dừng định dạng Do đó, trường length sẽ nhận giá trị hợp lệ bắt đầu từ 0.
Tiêu đề mở rộng cần tuân thủ một số điều kiện nhất định, đặc biệt là đối với các hàm xử lý gốc Ngoài ra, các tiêu đề mở rộng thuộc các loại khác nhau sẽ không ảnh hưởng đến nhau.
Một hàm cài đặt mở rộng có khả năng tương thích với nhiều loại tiêu đề mở rộng khác nhau Để đáp ứng các yêu cầu này, phần tiêu đề mở rộng đã được thiết kế một cách linh hoạt và hiệu quả.
16 bits đầu tiên được dung cho phần nhận biết hoặc truyền tham số.
Tìm hi ể u v ề x ử lí âm thanh và các chu ẩ n âm thanh
2.4.1.1 Phương pháp điều biến mã xung (PCM)
Các bản nhạc số được thu âm trong các studio với thiết bị phức tạp, nhưng bản chất của thu âm là chuyển đổi sóng âm thanh thành tín hiệu số Âm thanh thực là sóng cơ học dạng hình sin liên tục (analog), trong khi âm thanh số là những xung điện tử rời rạc (digital) Do đó, âm thanh số chỉ có thể mô phỏng gần giống âm thanh thực tế thông qua các mẫu rời rạc, và quá trình mô phỏng này được đặc trưng bởi một số thông số nhất định.
Sample là thành phần nhỏ nhất trong bản nhạc số, được tạo ra thông qua quá trình lấy mẫu nhiều lần để có các xung điện tử rời rạc Mỗi mẫu đại diện cho giá trị biên độ của tần số sóng âm tại thời điểm lấy mẫu Việc lấy nhiều mẫu sẽ giúp tín hiệu số thu được chính xác hơn.
Sample Rate, also known as Sampling Rate or Sampling Frequency, refers to the number of samples taken per second, measured in Hertz (Hz) For instance, a music track with a sample rate of 44,100 Hz means that it is sampled 44,100 times each second.
BitDepth là số lượng bit dữ liệu dùng để biểu diễn mỗi mẫu âm thanh, với các bản nhạc hiện nay thường có BitDepth là 16 bits hoặc 24 bits BitDepth càng cao thì âm thanh càng sắc nét và trung thực, do đó nó còn được gọi là Resolution (độ nét).
Bằng cách sử dụng các thuật toán, tín hiệu số được phân tách thành nhiều kênh (Channel), nhằm tạo ra trải nghiệm âm thanh chân thực khi nghe qua hệ thống loa phù hợp, mang lại cảm giác như đang thưởng thức nhạc trong không gian thực tế.
Từ các thông số trên ta có thể tính toán được độ dài dữ liệu âm thanh mà ta gửi trong mỗi gói theo công thức:
T là thời gian lấy mẫu [s]
N là số lần lấy mẫu trên một giây [Hz]
K là kích thước của một mẫu [byte]
Trong đồ án, chúng ta chọn thời gian lấy mẫu T là 20ms (0.02 giây) với tần số lấy mẫu N là 8000 Hz Kích thước mỗi mẫu là K = 16 bits (2 bytes) và số kênh dữ liệu C là 1 Do đó, kích thước dữ liệu của một gói tin gửi đi được tính toán dựa trên các thông số này.
Dữ liệu âm thanh được điều biến mã xung (PCM) và lưu trữ dưới định dạng file WAV, nhưng tín hiệu âm thanh này có dung lượng lớn và khó khăn khi truyền tải qua mạng Do đó, việc nén âm thanh là cần thiết để giảm bớt lưu lượng Chúng ta có hai thuật toán nén dữ liệu để giải quyết vấn đề này.
Thuật toán u-law, hay còn gọi là mu-law, là một phương pháp nén tín hiệu quan trọng, chủ yếu được áp dụng trong các hệ thống viễn thông kỹ thuật số.
Các thuật toán nén tín hiệu đóng vai trò quan trọng trong việc giảm phạm vi dải động của tín hiệu âm thanh, giúp cải thiện tỷ lệ tín hiệu -nhiễu (SNR) trong các hệ thống tương tự Đồng thời, trong lĩnh vực kỹ thuật số, việc này cũng góp phần giảm lỗi lượng tử hóa, từ đó nâng cao tỷ lệ tín hiệu trên tiếng ồn lượng tử hóa.
Thuật toán A-law là một tiêu chuẩn nén-giãn tín hiệu được áp dụng trong các hệ thống viễn thông số tại Châu Âu Mục tiêu của thuật toán này là tối ưu hóa hệ thống, chẳng hạn như giảm dải động của tín hiệu tương tự, từ đó thực hiện quá trình lượng tử hóa và mã hóa nhị phân để truyền tải tín hiệu hiệu quả hơn.
2.4.2 Một sốđịnh dạng âm thanh
Tập tin WAV là định dạng lưu trữ dữ liệu âm thanh số hóa, sử dụng phương pháp mã hóa PCM để lấy mẫu âm thanh với tần số từ 11.025 kHz đến 44.1 kHz Mỗi mẫu âm thanh được lượng tử hóa bằng 1 hoặc 2 byte, và để lưu trữ một phút âm thanh, cần ít nhất 660 Kb Do đó, kích thước của file WAV luôn lớn hơn so với file Midi File WAV thuộc loại RIFF (Resource Interchange File Format), bao gồm một hoặc nhiều loại Chunk cùng với dữ liệu tương ứng.
Mã xung (PCM), được phát triển từ năm 1937, là nền tảng cho âm thanh analog PCM bao gồm hai yếu tố chính: tần số mẫu và độ sâu bit, quyết định chất lượng âm thanh.
Tần số mẫu (sample rate) xác định số lần biên độ rung của sóng âm thanh được ghi lại trong một giây, trong khi độ dày bit (bit depth) thể hiện số lượng bit thông tin từ mỗi mẫu âm thanh, tương ứng với độ phân giải của dữ liệu âm thanh số.
Âm thanh thực mà chúng ta nghe hàng ngày là một dải tần liên tục, trong khi âm thanh số lại khác Để hiểu cách hoạt động của âm thanh số, có thể so sánh nó với hình ảnh số trong video Những hình ảnh mà chúng ta thấy trong video thực chất là một chuỗi hình ảnh tĩnh, tương tự như âm thanh số, biên độ sóng âm thanh không trôi chảy mà thay đổi theo các chuẩn nhất định trong một khoảng thời gian.
2.4.2.3 Âm thanh của CD-ROM Âm thanh được ghi trên đĩa CD và định dạng file âm thanh WAV được sử dụng chuẩn định dạng pulse-code modulation (PCM) (nghĩa là trong analog ta thấy 1 tần số sine diễn tả âm thanh, nhưng trong kĩ thuật số ta không thể có sóng sine mà người ta sử dụng những "nhịp đập" cao thấp khác nhau 1 cách liên tục để diễn tả gần đúng nhất hình dạng sóng sine") Đây là những tín hiệu âm thanh gốc và hoàn toàn không được nén
Ph ầ n c ứ ng
Raspberry Pi Model B+ có bộ nhớ ram là 1 GB LPDDR2 SDRAM cao hơn
512 MB ở Model B Việc tăng dung lượng RAM giúp cải thiện đáng kể tốc độ CPU và xử lí các tác vụ một cách mượt mà hơn
Raspberry Pi Model B+ được trang bị kết nối không dây Wifi băng tần 2.4GHz và 5GHz, cùng với Ethernet gigabit qua cổng USB 2.0, đạt tốc độ lên đến 300Mbps, gấp ba lần so với Pi 3 Model B Thiết bị còn hỗ trợ Bluetooth 4.2 và Bluetooth Low Energy, mang lại khả năng kết nối tốt hơn với các thiết bị thông minh khác.
Raspberry Pi có thể hoạt động với bất kỳ bàn phím máy tính và chuột thông qua kết nối với các cổng USB Model B+ cung cấp 4 cổng USB.
Bộ điều khiển video hỗ trợ nhiều độ phân giải hiện đại như HD và Full HD, cũng như các độ phân giải màn hình khác, bao gồm cả độ phân giải CRT cũ Khi không có tùy chỉnh ép xung, nó có khả năng cung cấp các độ phân giải như EGA (640 × 350), VGA (640 × 480) và 720p HDTV (1280 × 720).
3.2.6 Đồng hồ thời gian thực
Raspberry Pi không được trang bị đồng hồ thời gian thực, có nghĩa là nó không thể theo dõi thời gian trong ngày, khi nó không hoạt động
Thay vào đó, một chương trình chạy trên Pi có thể lấy thời gian từ một máy chủ thời gian mạnghoặc do người dùng nhập vào lúc khởi động
Một đồng hồ thời gian thực (như DS1307) với pin dự phòng có thể được thêm vào (thường thông qua giao tiếp I²C)
Raspberry Pi 3 Model B+ có 40 chân GPIO:
GPIO# Chức năng thứ 2 pin# pin# Chức năng thứ 2 GPIO#
GPIO4 GCLK 7 8 TXD0 (UART) GPIO14
GPIO9 MISO (SPI) 21 22 GEN6 GPIO25
GPIO11 SCLK (SPI) 23 24 CE0_N (SPI) GPIO8
EEPROM ID_SD 27 28 ID_SC EEPROM
Bảng 3.1: Các chân GPIO của Raspberry Pi Model 3 B+
Model B+ và quy định GPIO truy cập vào các LED trạng thái ACT sử dụng GPIO 47, và LED trạng thái nguồn sử dụng GPIO 35.
H ệ điề u hành và l ậ p trình
Một số hệ điều hành thông dụng cho Raspberry Pi:
RaspbianUbuntu Mate : https://ubuntu-mate.org/raspberry-pi/
Ubuntu : https://developer.ubuntu.com/en/snappy/start/#snappy-raspi2
Windows 10 IoT Core: http://ms-iot.github.io/content/en-
OSMC : https://osmc.tv/download/
OpenELEC : http://openelec.tv/get-openelec
PiNet : http://pinet.org.uk/
RiscOS : https://www.riscosopen.org/content/downloads/raspberry-pi
Bất kì ngôn ngữ nào compile cho ARMv6 có thể được sử dụng cho Raspberry Pi như c, python,…
Hình 3.3: Hệ điều hành Raspbian
Raspbian là một hệ điều hành thân thiện, dễ cài đặt và sử dụng, được hỗ trợ mạnh mẽ bởi cộng đồng mã nguồn mở toàn cầu Với giao diện đơn giản và tính năng dễ dàng, Raspbian mang lại trải nghiệm người dùng thuận tiện.
Các bước cài đặt hệ điều hành raspbian cho raspberry: Để cài đặt hệ điều hành cho Raspberry Pi,ta cần:
Phần mềm Win32 Disk Imager (WDI)
Một thẻ nhớ MicroSD tối thiểu 4GB
Bước 1: Chèn thẻ MicroSD vào đầu đọc thẻ ở máy tính và kiểm tra tên ổ được gán cho thẻ nhớ
Bước 2: Mở phần mềm Win32DiskImager, phần mềm này chỉ cần download về rồi chạy mà không cần cài đặt.
Bước 3: Nạp hệ điều hành Raspbian vào thẻ nhớ Đầu tiên, hãy tải file hệ điều hành từ trang web chính thức của Raspbian (https://www.raspberrypi.org/downloads/raspbian/) Lưu ý rằng file cần phải có định dạng img; nếu bạn tải về file nén (.zip hoặc tar.gz), hãy giải nén để lấy file img Cuối cùng, chọn ổ thẻ nhớ mà bạn muốn ghi hệ điều hành vào.
Hình 3.4: Format thẻ nhớ Cuối cùng bấm Write và chờ đợi quá trình ghi hoàn tất.
Bước 4 : cắm thẻ nhớ vào raspberry và khởi động raspberry.Hoàn tất quá trình cài đặt hệ điều hành raspbian.
Sau khi Raspbian được cài đặt xong, Raspberry Pi sẽ boot lần đầu tiên
Hình 3.5: Màn hình cấu hình raspi-config Để cập nhật hệ điều hành, chọn Advanced Options , chọn A0 Update
Hình 3.6: Cập nhật hệ điều hành Để đặt tên máy, chọn: Advanced Option , chọn A2 Hostname Nhập tên máy và Enter
Hình 3.7: Cài đặt tên máy Để cài đặt ngôn ngữ : Trong raspi-config, chọn Internationalisation
Để thay đổi ngôn ngữ trên RPI, bạn chọn "Change Locale" Ngôn ngữ mặc định là en_GB.UTF-8 UTF-8 (tiếng Anh – Anh), nhưng nên chuyển sang en_US.UTF-8 UTF-8 (tiếng Anh – Mỹ) để sử dụng Mặc dù có tùy chọn tiếng Việt (vi_VN.UTF-8 UTF-8), nhưng nếu bạn chưa có kinh nghiệm với ngôn ngữ trên Linux, không nên sử dụng Tìm dòng en_GB.UTF-8 UTF-8 và nhấn phím Space để bỏ dấu * Sau đó, tìm dòng en_US.UTF-8 UTF-8 và nhấn phím Space để đánh dấu *, cuối cùng nhấn Enter để hoàn tất.
Hình 3.8: Cài đặt ngôn ngữ
3.3.3 Một số lệnh cơ bản trên hệđiều hành Raspbian
Người dùng Linux, đặc biệt là với hệ điều hành Raspbian, thường ưa chuộng việc cài đặt và cấu hình thông qua các câu lệnh Phương pháp này không chỉ tiết kiệm tài nguyên mà còn mang lại cảm giác nhanh chóng và thú vị hơn so với việc sử dụng giao diện đồ họa.
Nhiều người mới bắt đầu với Raspbian có thể không nắm rõ các lệnh cơ bản, và ngay cả những người sử dụng lâu năm cũng khó nhớ hết mọi câu lệnh của hệ điều hành này Dưới đây là một số lệnh thông dụng và cơ bản nhất trên Raspberry Pi sử dụng hệ điều hành Raspbian.
Có 2 chế độ người sử dụng trên Linux nói chung, một là chế độ người dùng với quyền truy cập cơ bản, và một chế độ với quyền truy cập quản trị viên (còn được gọi là root) Một số lệnh hoặc hành động không thể thực hiện với quyền cơ bản và bạn sẽ cần phải đăng nhập vào chế độ root để thực hiện chúng Do đó bạn sẽ thường xuyên thấy tiền tố “sudo” trước câu lệnh, có nghĩa là bạn đang nói với Raspbian rằng tôi cần thực thi các lệnh với quyền của root. apt-get update: Cập nhật phiên bản Raspbian apt-get upgrade Nâng cấp toàn bộ các gói phần mềm đã cài đặt trên Raspbian poweroff Tắt Raspberry Pi raspi-config Mở menu thiết lập cấu hình
Raspberry Pi hay Raspbian reboot Khởi động lại Raspberry Pi shutdown -h now Tắt Raspberry Pi ngay lập tức startx Mở giao diện đồ họa của Raspbian
Để di chuyển từ thư mục hiện tại sang thư mục /abc/xyz, sử dụng lệnh `cd /abc/xyz` Để hiển thị danh sách các file trong thư mục cùng với thông tin về kích thước file, ngày sửa, và quyền hạn, bạn có thể dùng lệnh `ls -la` Để tạo một thư mục mới có tên là example_directory trong thư mục hiện tại, hãy sử dụng lệnh `mkdir example_directory` Nếu bạn muốn xóa file example.txt, hãy sử dụng lệnh `rm example.txt` Để xóa thư mục example_directory (nếu nó đang trống), bạn có thể dùng lệnh `rmdir example_directory` Để tạo một file trắng mới trong thư mục hiện tại, hãy sử dụng lệnh `touch` Cuối cùng, để kiểm tra tình trạng mạng hiện tại, bạn có thể dùng lệnh `ifconfig`.
Raspberry Pi Bạn có thể biết IP của Raspberry Pi nếu đang kết nối wget http://www.website.com/example.txt
Tải file example.txt từ trên mạng về và lưu vào folder hiện tại vcgencmd get_mem arm && vcgencmd get_mem gpu
Hiển thị thông tin RAM của CPU và GPU
This list of commands aims to help you quickly familiarize yourself with Raspberry Pi and use it more effectively One essential command is "dpkg get-selections," which displays all the software installed on your Raspberry Pi.
Hiển thị toàn bộ các phần mềm đã cài trên Raspberry Pi
Bảng 3.2: Các lệnh cơ bản HĐH Raspbian
3.3.4 Lập trình GPIO trên Raspberry Pi
Raspberry Pi là một công cụ lý tưởng cho các ứng dụng điều khiển tự động, cho phép đọc và nhận dữ liệu từ thiết bị bên ngoài thông qua các chân cắm mở rộng GPIO Để đơn giản hóa việc điều khiển các chân này, bộ thư viện WiringPi được sử dụng WiringPi là thư viện viết bằng C, dành cho BCM2837 trên Raspberry Pi, phát hành theo giấy phép GNU LGPLv3, và hỗ trợ nhiều ngôn ngữ lập trình như C và C++ Thư viện này cho phép lập trình đầu ra cơ bản cho từng chân hoặc cấu hình các chân để thực hiện các tính năng chuyên biệt như điều chế độ rộng xung PWM, giao tiếp UART, SPI, I2C, và nhiều tính năng khác Để sử dụng WiringPi, bước đầu tiên là cài đặt thư viện này vào Raspberry Pi đang chạy hệ điều hành Raspbian.
Bước 1: Cài đặt chương trình download dữ liệu GIT Mở terminal gõ lệnh: pi@raspberrypi:~$sudo apt-get install git-core
Bướ c 2: Doawnload bộthư viện và các ví dụ về wiringPi về kit bằng cách gõ lệnh: pi@raspberrypi:~$git clonegit://git.drogon.net/wiringPi
Sau khi download, thư viện wiringPi sẽ nằm trong thư mục/home/Pi
B ướ c3: Chuyển đến thư mục wiringPi để tiến hành Build thư viện này pi@raspberrypi:~ $ cd wiringPi pi@raspberrypi:~$./build
Sau khi hoàn tất cài đặt bộ thư viện wiringPi, bạn cần kiểm tra xem quá trình cài đặt có thành công hay không Để thực hiện điều này, hãy mở cửa sổ Terminal và nhập lệnh: `gpio -v` và `gpio readall`.
Sử dụng hai lệnh trên tại cửa số teminal sẽ hiển thị ra phiên bản wiringPi và cấu hình các chân hiện tại của kit Raspberry Pi
VD lập trình bật tắt LED:
#include int main(void)
{ wiringPiSetupGpio(); pinMode(17, OUTPUT); while(1){ digitalWrite(17, HIGH);
3.3.5.1 Giới thiệu về mô hình client/server
Mô hình client-server là hình thức giao tiếp phổ biến giữa hai tiến trình hoặc hai máy, trong đó tiến trình client kết nối với tiến trình server để thực hiện yêu cầu trao đổi dữ liệu.
Khách hàng cần nắm rõ thông tin về sự tồn tại và địa chỉ của tiến trình server, trong khi server không cần biết về khách hàng cho đến khi kết nối được thiết lập.
Khi thiết lập kết nối, hai bên có thể trao đổi dữ liệu qua lại Để tạo ra kết nối này, cần xây dựng một socket, được hiểu như một điểm đầu cuối trong kênh kết nối giữa hai tiến trình, tương tự như việc kết nối giữa hai người trong một cuộc gọi điện thoại.
Các hệ thống (linux, windows) đều cung cấp các hàm hệ thống để thực hiện thiết lập một socket.
Có 2 loại socket được sử dụng rộng rãi là: stream sockets và datagram sockets:
Stream sockets dựa trên giao thức TCP (Transmission Control Protocol) và là giao thức hướng luồng, cho phép truyền dữ liệu giữa hai tiến trình đã thiết lập kết nối Giao thức này đảm bảo rằng dữ liệu được truyền đến nơi nhận một cách đáng tin cậy và đúng thứ tự nhờ vào cơ chế quản lý luồng lưu thông trên mạng cùng với cơ chế chống tắc nghẽn.
Datagram sockets dựa trên giao thức UDP (User Datagram Protocol), là giao thức hướng thông điệp, cho phép truyền dữ liệu mà không cần thiết lập kết nối giữa các tiến trình Khác với giao thức TCP, dữ liệu truyền qua UDP không đảm bảo độ tin cậy, có thể không đúng thứ tự và có thể bị lặp lại Tuy nhiên, nhờ vào việc không yêu cầu các cơ chế phức tạp để thiết lập kết nối, UDP mang lại tốc độ truyền nhanh, phù hợp cho các ứng dụng cần truyền dữ liệu nhanh như chat và game.
Các bước thiết lập một socket phía client gồm:
Tạo một socket bằng hàm socket()
Kết nối socket đến địa chỉ của server bằng hàm connect()
Gửi và nhận dữ liệu: Có một số cách khác nhau, đơn giản nhất là sử dụng các hàm read() và write()
Đóng kết nối bằng hàm close()
Các bước thiết lập một socket phía server gồm:
Tạo một socket bằng hàm socket()