Truyền dòng là kỹ thuật truyền dữ liệu mà trong đó dữ liệu được client nhận và hiển thị một cách liên tục, đồng thời với quá trình gửi từ phía server. Kỹ thuật truyền dòng (Data Streaming): Cấu trúc hệ thống sử dụng “Streaming Server”. Đóng vai trò quan trọng trong việc cung cấp các dịch vụ trực truyến. Để cung cấp các dịch vụ trực tuyến chất lượng. Các máy chủ streaming được yêu cầu phải xử lý dữ liệu videoaudio với sự ràng buộc về thời gian, hạn chế thời gian trễ và hỗ trợ hoạt động kiểm soát tương tác như tạm dừng (pause), tua (fast forword) tiếp tục, nhanh chóng chuyển tiếp và nhanh chóng quay lại. Một máy chủ Streaming thường bao gồm ba hệ thống con: Một hệ thống kết nối giao tiếp, một hệ điều hành và một hệ thống lưu trữ.
Trang 1
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
Báo Cáo
Truyền Thông Đa Phương Tiện
trong
truyền thông dữ liệu video-audio.
GV Hướng Dẫn : PGS.TS Nguyễn Thị Hoàng Lan
SV Thực Hiện : Hoàng Hữu Hợi – 20121772.
Phạm Minh Hiếu – 20121693 Nguyễn Văn Phương – 20122252 Trương Văn Tam – 20122370.
Nguyễn Trung Hiếu – 20121690.
Trang 2Hà Nội, Tháng 12 năm 2015
PHÂN CÔNG CÔNG VIỆC.
• Tìm hiểu chung về mô hình và kỹ thuật truyền dòng dữ liệu (Data
Streaming) –Hoàng Hữu Hợi
• Khảo sát các công nghệ triển khai kỹ thuật “Data Streaming” hiện nay trongcác ứng dụng truyền thông dữ liệu video-audio – Nguyễn Văn Phương
• Tìm hiểu giao thức RTMP (Real Time Message Protocol) – Phạm Minh Hiếu
• Hoạt động của RTMP trong Video streaming - Trương Văn Tam
• Sự khác nhau về kỹ thuật truyền dòng dùng RTMP với kỹ thuật truyền dòngdùng RTP – Nguyễn Trung Hiếu
Trang 3MỤC LỤC
Trang 4I TÌM HIỂU CHUNG VỀ MÔ HÌNH VÀ KỸ THUẬT
TRUYỀN DÒNG DỮ LIỆU
1 Khái niệm
Truyền dòng là kỹ thuật truyền dữ liệu mà trong đó dữ liệu được client nhận và hiển thị một cách liên tục, đồng thời với quá trình gửi từ phía server
2 Kỹ thuật truyền dòng (Data Streaming):
• Cấu trúc hệ thống sử dụng “Streaming Server” Đóng vai trò quan trọng trong việc cung cấp các dịch vụ trực truyến Để cung cấp các dịch vụ trực tuyến chất lượng Các máy chủ streaming được yêu cầu phải xử lý dữ liệu video/audio với sự ràng buộc về thời gian, hạn chế thời gian trễ và hỗ trợ hoạt động kiểm soát tương tác như tạm dừng (pause), tua (fast forword) tiếptục, nhanh chóng chuyển tiếp và nhanh chóng quay lại Một máy chủ
Streaming thường bao gồm ba hệ thống con: Một hệ thống kết nối giao tiếp, một hệ điều hành và một hệ thống lưu trữ
• Sử dụng giao thức UDP Là giao thức truyền dữ liệu đơn giản và hiệu quả Tuy nhiên không có cơ chế nào trong giao thức để đảm bảo việc giao tập tinmedia đi Nếu dữ liệu bị mất, việc stream có thể khiến cho chất lượng bị sụtgiảm
• Truyền dữ liệu với tốc độ phù hợp tốc độ trình diễn file Nếu các Streaming Client nhận được các dữ liệu nhanh hơn so với yêu cầu, nó cần phải lưu dữ liệu dư thừa trong một bộ đệm Nếu luồng dữ liệu không đủ nhanh tải về, dữliệu sẽ không được mịn màng khi hiển thị
• Dữ liệu trình diễn xong không lưu trữ ở thiết bị vật lý Các dữ liệu lưu ở bộ nhớ đệm sau khi trình diễn xong thì sẽ được xóa ngay sau đó
3 Nguyên tắc truyền dòng
Dữ liệu video, audio thu bằng máy thu hoặc lưu ở file sẽ được nén lại Dữ liệu nén này sau đó được phân thành các gói có kích thước bằng nhau rồi được truyền đi qua mạng Đến nơi nhận, các gói sẽ được khôi phục lại, đồng bộ và giải nén sau đó sẽđược trình diễn trên client
Các kĩ thuật chủ yếu được sử dụng trong quá trình truyền dữ liệu thời gian thực:
• Đóng gói dữ liệu Tạo ra các gói dữ liệu có độ dài như nhau
Trang 5• Tạo dòng dữ liệu Dòng liên tiếp các gói dữ liệu được đưa vào mạng theo nhịp thời gian, phù hợp ứng dụng.
• Đồng bộ dữ liệu Với cơ chế đồng bộ, ứng dụng tại bên nhận có thể hiển thịvideo gần giống như khi nó được khởi tạo tại bên gửi
Ưu điểm:
• Ta có thể sử dụng dữ liệu trong khi đang truyền tải dữ liệu Không cần tải toàn bộ dữ liệu về máy Do đó không tốn thời gian để chờ đợi dữ liệu được tải về
• Streaming là cách nhanh nhất để truy cập nội dung trên Internet
• Tính streaming liên tục của luồng video – âm thanh của Radio/TV
thường ngăn cản khả năng điều khiển việc phát lại của người nhận Tuy nhiên, vấn đề này có thể được khắc phục bởi bộ nhớ đệm của máy chủ và
bộ đệm của thiết bị phát
Trang 64 Mô hình
a Unicast
Unicast gửi một bản sao riêng media stream từ máy chủ đến mỗi người nhận Người sử dụng kết nối với máy chủ streaming mà luồng gửi nhận hoàn toàn tách biệt với mọi người dùng khác
Bất lợi của các công nghệ truyền thống unicast: có các dòng dữ liệu giống nhau trên các phần khác nhau của mạng Cấu hình này sử dụng lãng phí các tài nguyên mạng (node, băng thông) làm cho máy chủ truyền tải nặng nề
b Multicast
Sự phân bố của các dòng dữ liệu không được xử lý bởi máy chủ nhưng nó đượcchia sẻ bởi các nút mạng Vì vậy, máy chủ streaming chỉ cần truyền một dòng dữ liệu tới địa chỉ đại diện của nhóm Việc này giúp sử dụng tối ưu các nguồn tài nguyên mạng và giảm tải máy chủ
Nhóm Multicast có thể được xác định bởi địa chỉ mạng đặc biệt, có địa chỉ Ipv4
từ 224.0.0.0 đến 239.255.255.255 Một nhóm multicast chỉ có một địa chỉ nhóm đại diện cho tất cả các thành viên trong nhóm và các dữ liệu được gửi đến địa chỉ nhóm này sẽ được gửi tới tất cả các thành viên trong nhóm
Trang 7II KHẢO SÁT CÔNG NGHỆ TRIỂN KHAI KỸ THUẬT
“DATA STREAMING” HIỆN NAY TRONG CÁC ỨNG DỤNG TRUYỀN THÔNG DỮ LIỆU VIDEO – AUDIO
Hiện nay kĩ thuật streaming được sử dụng rộng rãi, khi ta xem các video clip, xem truyền hình trên internet đều bắt gặp streaming
• Trình duyệt sẽ yêu cầu tập tin đa phương tiện sau thông tin liên lạc server
• Trình duyệt sẽ đưa tệp tin đa phương tiện đến player và trình chiếu nó
• Sau đó Server sẽ stream tệp video/audio đến player
Trang 81 Data Streaming được sử dụng trong giao thức RSTP
RSTP được thiết kế để điều khiển truyền dòng dữ liệu đa phương tiện với thôngtin thời gian đáp ứng yêu cầu trình diễn tại máy user
RSTP yêu cầu client duy trì thông tin về phiên streaming qua các request
RTSP.Cả 2 phía client và sever đều có thể đưa ra các RSTP request
5 Data streaming còn được sử dụng trong giao thức thời gian thực RTP/RTCP
6 Data streaming còn dùng trong sử dụng giao thức RTMP (Real Time Message Protocol)
Trang 9III GIAO THỨC RTMP (REAL TIME MESSAGING
PROTOCOL)
1 Giới thiệu
RTMP là giao thức được tạo ra bởi Macromedia (hiện nay là Adobe) dùng để truyền tải các đối tượng Flash và video trên các kết nối mạng Hiện tại chỉ có 2 máy chủ hỗ trợ giao thức này là Macromedia Media Sever, và server mã nguồn mở Red5.
Đây là một giao thức đơn giản, được tối ưu cho các kết nối tốc độ thấp Nó có thể hỗ trợ tối đa 64 luồng dữ liệu trên cùng một kết nối Trong header của một AMF có chứa chỉ số của luồng dữ liệu mà nó thuộc về Một message RTMP có thể chứa nhiều hơn một đối tượng AMF.
Trang 108 Cấu trúc gói tin
Server và máy chủ gửi tin nhắn rtmp thông qua mạng để liên kết đến nhữg server và máy chủ khác tin nhắn bao gồm audio, video, dữ liệu hay bất cứ tin nhắn khác.tin nhắn rtmp có 2 phần là phần Header và phần Payload
+ Header:
Messge type: cho biết kiểu gói tin
Payload Length: cho biết kích thước phần payload
Timestamp: nhãn thời gian của gói tin
Stream ID: xác định dòng của gói tin
+ Payload: chứa dữ liệu thực tế của gói tin
9 Quá trình bắt tay
Hoạt động cơ bản của RTMP như sau : Tất cả quá trình truyền thông được khởi động bởi client Client khởi tạo một kết nối RTMP bằng cách gửi một byte có giá trị 0x03 – byte này được theo sau bởi một khối dữ liệu 1536 byte Định dạng của khối
dữ liệu này cho đến nay vẫn chưa biết nhưng nó dường như không thực sự được sử dụng bởi giao thức ngoại trừ thao tác bắt tay
Server khi nhận được gói dữ liệu sẽ lưu lại khối dữ liệu 1536 byte này, và cũng gởi 1 byte giá trị 0x03 theo sau bởi hai khối 1536 byte Khối thứ hai chính là nội dung
đã được gửi lên bởi client trước đó
Trang 11Client nhận hai khối dữ liệu 1536 byte từ server, so sánh với khối dữ liệu ban đầu nó gửi lên server, nếu phù hợp thì kết nối được thiết lập, nó cũng gửi trả khối dữ liệu này về lại cho server.
Hình 3: Quá trình bắt tay giữa Client và Server trong giao thức RTMP
Sau thao tác bắt tay Client tiếp tục gửi ba đối tượng AMF lên server để khởi động truyền dữ liệu Đối tượng đầu tiên là đối tượng connect nhằm thông báo client
đã sẵn sàng cho quá trình truyền thông Đối tượng AMF thứ hai chính là đối tượng NetConnection từ client, lớp Action Script này được sử dụng tạo kết nối tới media server Đối tượng AMF thứ ba là đối tượng NetStream từ client dùng để xác định file cần stream từ server
Trang 12Đối với tiêu đề 8 byte thì bỏ đi trường source id trong tiêu đề 12 byte.
Đối với tiêu đề 4 byte thì bỏ đi trường length, content type trong tiêu đề 8 byte.Đối với tiêu đề 1 byte thì bỏ đi trường timestamp trong tiêu đề 4 byte nghĩa là
nó chỉ gồm byte đầu tiên chứa kiểu tiêu đề và chỉ số đối tượng AMF
Trang 13Bảng 5: Một số giá trị trong trường Content Type
11 Truyền tải nhiều đối tượng AMF trên cùng một kết nối
Mỗi đối tượng AMF được chia thành các khối dữ liệu có kích thước 128 byte (ngoại trừ audio có kích thước 64 byte) Khối đầu tiên thường được gắn tiêu đề 12 byte, các khối tiếp theo thường được gắn tiêu đề 1 byte, trong bất kì loại tiêu đề nào cũng có chứa chỉ số của đối tượng AMF tương ứng
Trang 14Hình 6: Các khối dữ liệu của một đối tượng AMF có chỉ số là 0x03
Để có thể truyền nhiều đối tượng AMF trên một kết nối đơn người ta không truyền các khối dữ liệu của một đối tượng AMF liên tiếp nhau mà truyền xen kẽ các khối dữ liệu của nhiều đối tượng AMF
Trang 15Hình 7: Truyền các khối dữ liệu xen kẽ nhau.
Trang 16IV HOẠT ĐỘNG CỦA RTMP TRONG VIDEO STREAMING
1 Tìm hiểu RTMP trong ứng dụng Flash Video
RTMP được sử dụng trong ứng dụng Flash Video trên internet.Một giao thức đặc biệt cho các ứng dụng máy chủ thời gian thực khác nhau,từ tin nhắn thức thời để chia sẻ dữ liệu hợp tác với video streaming
RTMP trong Flash Video được cung cấp bởi phần mềm máy chủ cấp phép từ Adobe,đặc biệt là Flash Media Server (FMS).FMS được cài đặt trên một máy chủ được nối mạng và quản lý trực tuyến Flash Video riêng rẽ với các máy chủ Web lưu trữ các bộ phim Flash.FMS cấp phép cho các trang web âm lượng cao
2 Phân tích ứng dụng
Một trong những lợi ích của việc dùng giao thức RTMP là phát lại gần như tức thời của video,cung cấp các tập tin Flash.Video được mã hóa với một bitrate thích hợp cho tốc độ kết nối của người xem.Real-time-streaming cũng có thể tìm được file FLV vào bất kỳ thời điểm nào trong nội dung.Tính năng này đặc biệt thuận lợi cho nội dung trong thời gian dài vì người xem không phải chờ đợi cho các tệp tin video đểtải trước khi nhảy
Những người muốn lưu trữ video có thể sử dụng thời gian thực streaming video
ở bất kỳ định dạng video nào không chỉ là Flash Video.Khi các luồng video RTMP dựa vào Flash Video,âm thanh và dữ liệu video chỉ được lưu trữ trong bộ nhớ đệm Flash Player.Toàn bộ tập tin Flash Video không được sao chép hoặc lưu trữ vào bộ nhớ cache của trình duyệt web
Các giao thức sử dụng có thể ảnh hưởng đến chiến lược triển khai Flash
Video.Nếu ta mã hóa các tập tin Flash Video với một công cụ nén,ta nên xác định giao thức để sử dụng trước khi tạo ra các tập tin FLV.Vì kết nối RTMP gửi dữ liệu video từ một máy chủ từ xa đến một máy nghe nhạc đệm tạm thời,tốc độ dữ liệu Video của Flash nên được dự đoán trong suốt thời gian phát lại.Tính nhất quán dữ liệu tốc độ này chỉ có thể được thực hiện với tốc độ bit không đổi (CBR) mã hóa.Gần như tất cả bộ mã hóa Flash Video cung cấp các tùy chọn lựa chọn bitrate không đổi hoặc bitrate biến (VBR) mã hóa.Nếu công cụ mã hóa Flash Video không cung cấp một sự lựa chọn,nó có thể sử dụng mã hóa CBR
Nếu nội dung Flash Video được mã hóa với một thiết lập VBR,tập tin có thể có gai dữ liệu cực mà vượt qua tốc độ bit trung bình của video.Những gai đột ngột có thểtrống rỗng đệm Flash Player và cho kết quả phát lại tạm thời bị đình trệ và một pause-play-pause gây nhiễu.Tuy nhiên,nếu nội dung Flash Video sẽ không được phân phối
Trang 17qua RTMP,ta có thể an toàn sử dụng mã hóa VBR vơi tiêu chuẩn trên một máy chủ web Bởi vì Flash Video tải dần dần và được lưu trữ trong bộ nhớ cache của trình duyệt web, gai dữ liệu có lẽ sẽ không xảy ra trong quá trình phát lại cung cấp các bitrate đang sử dụng là phù hợp với tốc độ kết nối của người xem.
Tuy nhiên, điều này không phải luôn luôn chia sẻ với giao thức RTMP - Flash Video Cổng mặc định cho các kết nối RTMP là 1935, trong đó có thể không được cho phép trên các bức tường lửa chặt chẽ Nếu nỗ lực đầu tiên Flash Player để chạy video qua cổng 1935 không thành công, Flash Player tự động cố gắng để kết nối với các dòng video với RTMP trên cổng 80 Nếu phép thử thứ hai này không thành công, cuối cùng có sẵn cho Flash Player là để thử một HTTP kết nối -tunneled trên cổng 80
Một đường hầm kết nối có nghĩa là các gói dữ liệu RTMP được gói (hoặc đeo mặt nạ)
trong một gói dữ liệu HTTP Một số bức tường lửa cho phép lưu lượng này, vì các gói dữ liệu dường như là bình thường lưu lượng HTTP Web Nếu các bức tường lửa kiểm tra dữ liệu HTTP, tuy nhiên, nó vẫn có thể từ chối các kết nối, và các Video Flash sẽ không chạy
Nếu ta kiểm soát quyền truy cập vào nội dung Flash Video, và ta không muốn người dùng các file FLV ra khỏi bộ nhớ cache của trình duyệt web của họ, ta phải sử dụng thời gian thực Streaming Flash Video Ngay sau khi ta đặt các file FLV ở một vịtrí có thể truy cập công khai trên một máy chủ Web,ta đang cho phép người sử dụng
để sao chép các tập tin FLV và làm bất cứ điều gì họ muốn.Rất nhiều tập tin Flash Video trên Web thậm chí từ số lượng lớn các trang web của Neutrino thời gian thực Streaming Flash Video Tìm kiếm video của Google và Youtube là những ví dụ của các trang web cung cấp trình duyệt cache Tuy nhiên, thời gian thực Streaming Flash Video thường là lựa chọn duy nhất khả thi cho công ty và các tổ chức (như hãng phim
và các mạng truyền hình) mà cần phải kiểm soát cách thức nội dung của họ được xem
và truy cập bởi công chúng
Nếu ứng dụng Flash được thiết kế để chạy từ một nguồn địa phương như ổ cứng của người dùng hoặc phương tiện truyền thông cố định (CD / DVD-ROM),ta có thể cung cấp các nội dung Flash Video để cùng tồn tại với các tập tin địa phương khác được sử dụng cho các ứng dụng Trừ khi ta muốn yêu cầu một kết nối Internet cho các ứng dụng Flash để chạy ta không cần phải lưu trữ các tập tin Flash video trên các máy chủ từ xa Web (HTTP) hoặc thời gian thực máy chủ Streaming (RTMP)
Theo chiều dài của một file video tăng lên, vì vậy nên khả năng sử dụng thời gian thực Streaming Flash Video (RTMP) trong Flash Video dần tải (HTTP) Bất kể tốc độ dữ liệu được sử dụng bởi các tập tin video, file còn có kích thước file lớn hơn Khi một HTTP-giao Flash Video bắt đầu tải về vào trong Flash Player, theo mặc
Trang 18định các tập tin tiếp tục tải vào bộ nhớ cache của trình duyệt cho dù người sử dụng đồng hồ nội dung Nếu ta lưu trữ các tập tin FLV lớn trên máy chủ web , các byte dữ liệu chuyển giao các máy chủ Web sẽ tăng một cách nhanh chóng, có khả năng tăng chi phí tài chính của lưu trữ các tập tin Nếu bạn lưu trữ các tập tin FLV lớn trên một FMS (hoặc Flash Video Streaming Service), chi phí truyền dữ liệu của bạn chỉ bao gồm các phần của Video Flash dõi bởi mỗi người dùng.
RTMP
Tín hiệu thoại sau khi nén xuống tốc độ thấp được đóng gói lại để truyền đi trong mạng chuyển mạch gói Có nhiều cách thức đóng gói tín hiệu thoại để truyền trong mạng IP Một trong những cách thức được áp dụng nhiều nhất là bộ giao thức RTP/RTCP nhờ tính linh hoạt và khả năng giám sát trạng thái dòng thông tin một cách hiệu quả của nó
1 Vai trò của RTP
Giao thức RTP (Realtime Transport Protocol) cung cấp các chức năng giao vận phù hợp cho các ứng dụng truyền dữ liệu mang đặc tính thời gian thực như là thoại vàtruyền hình tương tác Những dịch vụ của RTP bao gồm trường chỉ thị loại tải trọng (payload identification), đánh số thứ tự các gói, điền tem thời gian (phục vụ cho cơ chế đồng bộ khi phát lại tín hiệu ở bên thu)…
Thông thường các ứng dụng chay giao thức RTP ở bên trên giao thức UDP để
sử dụng các dịch vụ ghép kênh (mutiplexing) và kiểm tra tổng (checksum) của dịch
vụ này; cả hai giao thức RTP và UDP tạo nên một phần chức năng của giao thức tầng giao vận Tuy nhiên RTP cũng có thể được sử dụng với những giao thức khác của tầng mạng và tầng giao vận bên dưới miễn là các giao thức này cung cấp được các dịch vụ mà RTP đòi hỏi: Giao thức RTP hỗ trợ việc truyền dữ liệu tới nhiều đích sử dụng phân bố dữ liệu multicast nếu như khả năng này được tầng mạng hoạt động bên dưới nó cung cấp
Một điều cần lưu ý là bản thân RTP không cung cấp một cơ chế nào đảm bảo việc phân phát kịp thời dữ liệu tới các trạm mà nó dựa trên các dịch vụ của tầng thấp hơn để thực hiện điều này RTP cũng không đảm bảo việc truyền các gói theo đúng thứ tự Tuy nhiên số thứ tự trong RTP header ch phép bên thu xây dựng lại thứ tự đúng của các gói bên phát
Giao thức RTP được cố tình để cho chưa hoàn thiện Nó chỉ cung cấp các dịch
vụ phổ thông nhất cho hầu hết các ứng dụng truyền thông hội nghị đa phương tiện Mỗi một ứng dụng cụ thể đều có thể thêm vào RTP các dịch vụ mới cho phù hợp với