BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
--------------------------------------------
LÊ HỒNG PHÚ
NGHIÊN CỨU TRUYỀN VIDEO STREAMING TRÊN HTTP 2.0
Chuyên ngành : Kỹ thuật Viễn thông
LUẬN VĂN THẠC SĨ KỸ THUẬT
NGÀNH: ĐIỆN TỬ - VIỄN THÔNG
NGƢỜI HƢỚNG DẪN KHOA HỌC:
PGS.TS PHẠM NGỌC NAM
Hà Nội - Năm 2018
I
LỜI CAM ĐOAN
Tơi xin cam đoan những gì viết trong luận văn "NGHIÊN CỨU TRUYỀN
VIDEO STREAMING TRÊN HTTP 2.0" là do sự tìm tịi, học hỏi của bản thân
và dưới sự hướng dẫn của PGS.TS. PHẠM NGỌC NAM. Mọi kết quả nghiên cứu
cũng như ý tưởng của tác giả khác, nếu có đều được trích dẫn cụ thể.
Đề tài luận văn này cho đến nay chưa được bảo vệ tại bất kỳ một hội đồng bảo
vệ luận văn thạc sĩ nào và cũng chưa hề được công bố trên bất kỳ một phương tiện
nào.
Tôi xin chịu trách nhiệm về những lời cam đoan trên.
Hà Nội, Ngày 26 tháng 09 năm 2018
Học viên
Lê Hồng Phú
II
MỤC LỤC
DANH MỤC CÁC HÌNH VẼ............................................................................. VIII
DANH MỤC CÁC BẢNG BIỂU .......................................................................... XI
DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT ............................................... XII
MỞ ĐẦU ............................................................................................................... - 1 CHƢƠNG 1 TỔNG QUAN VỀ GIAO THỨC HTTP ...................................... - 4 1.1. Giao thức HTTP 1.1 ...................................................................................... - 5 1.1.1. Lịch sử hình thành .................................................................................. - 5 1.1.2. Các điểm chính của giao thức HTTP 1.1 .............................................. - 6 1.1.2.1. Phiên HTTP ....................................................................................... - 7 1.1.2.2. Xác thực HTTP .................................................................................. - 9 1.1.2.3. Các phương pháp yêu cầu của Client ................................................ - 9 1.2. Giao thức HTTP 2.0 .................................................................................... - 11 1.2.1. Giới thiệu chung.................................................................................... - 11 1.2.2. Các đặc điểm của HTTP 2.0 ................................................................ - 15 1.2.2.1. Dữ liệu truyền tải dạng nhị phân ..................................................... - 15 1.2.2.2. Nén dữ liệu được gửi đi ................................................................... - 15 1.2.2.3. Giải quyết phản hồi ưu tiên.............................................................. - 16 1.2.2.4. Thiết lập kết nối liên tục bằng cách ghép kênh ............................... - 16 1.2.2.5. Gửi trước dữ liệu Server Push ......................................................... - 18 1.3. Tổng kết Chƣơng 1 ...................................................................................... - 23 CHƢƠNG 2 NGHIÊN CỨU CÁC TIÊU CHUẨN STREAMMING ........... - 25 2.1. Tiêu chuẩn MPEG-DASH .......................................................................... - 25 2.1.1. Giới thiệu tổng quan ............................................................................. - 25 2.1.2. Tiêu chuẩn và triển khai ...................................................................... - 27 2.1.2.1. Cách thức làm việc .......................................................................... - 27 2.1.2.2. Mô hình dữ liệu DASH .................................................................... - 29 2.1.2.2.1. Sự mơ tả biểu diễn phương tiện (MPD) ..................................... - 30 2.1.2.2.2. Giai đoạn (Period) ...................................................................... - 33 2.1.2.2.3. Bộ thích ứng (Adaptation Set) ................................................... - 35 2.1.2.2.4. Phân đoạn và thông tin phân đoạn ............................................. - 35 -
III
2.1.2.2.5. DRM........................................................................................... - 42 2.1.2.2.6. MPEG-DASH profile................................................................. - 42 2.1.2.2.7. Một số tính năng bổ sung ........................................................... - 44 2.2. Tiêu chuẩn HLS ........................................................................................... - 46 2.2.1. Giới thiệu tổng quan ............................................................................. - 46 2.2.2. Tiêu chuẩn và triển khai ...................................................................... - 47 2.2.2.1. Kiến trúc HLS .................................................................................. - 47 2.2.2.2. Sử dụng HLS ................................................................................... - 52 2.2.2.2.1. Các loại phiên ............................................................................ - 52 2.2.2.2.2. Bảo vệ nội dung ......................................................................... - 53 2.2.2.2.3. Các giao thức lưu trữ và phân phối ............................................ - 54 2.2.2.2.4. Lựa chọn luồng .......................................................................... - 54 2.2.2.2.5. Bảo vệ khi có lỗi (chuyển dự phịng) ......................................... - 55 2.3. Tiêu chuẩn HDS........................................................................................... - 57 2.3.1. Giới thiệu tổng quan ............................................................................. - 57 2.3.2. Tiêu chuẩn và triển khai ...................................................................... - 59 2.3.2.1. Khi nào sử dụng HDS ...................................................................... - 59 2.3.2.2. Cách thức hoạt động của HDS ......................................................... - 60 2.3.2.2.1. Đóng gói dữ liệu ........................................................................ - 61 2.3.2.2.2. Publishing và xem lại ................................................................. - 61 2.3.2.2.3. Flash Player 10.1 và ActionScript 3.0 API ................................ - 62 2.3.2.2.4. Mã hóa cho HDS ........................................................................ - 62 2.3.2.2.5. Mã hóa cho Live HDS ............................................................... - 63 2.3.2.2.6. Các lựa chọn phân phối nội dung .............................................. - 64 2.3.2.3. Các công cụ HDS ............................................................................. - 65 2.3.2.3.1. Công cụ File Packager ............................................................... - 66 2.3.2.3.2. Công cụ Live Packager .............................................................. - 66 2.3.2.3.3. Module HTTP Origin cho Apache ............................................. - 66 2.3.2.3.4. Framework truyền thông mã nguồn mở (OSMF) ...................... - 67 2.3.2.3.5. Cách HDS hoạt động trong OSMF ............................................ - 67 2.3.2.3.6. Bảo vệ nội dung bằng FLASH ACCESS................................... - 68 2.3.2.4. Các tùy chọn triển khai cho HDS .................................................... - 69 -
IV
2.3.2.4.1. Định dạng file HDS ................................................................... - 69 2.3.2.4.2. Các lợi ích của định dạng dữ liệu F4F ....................................... - 70 2.3.2.4.3. Chi tiết định dạng file F4F ......................................................... - 71 2.3.2.4.4. Phân mảnh .................................................................................. - 72 2.3.2.4.5. Ghép kênh Rãnh gợi ý (hint track) ............................................ - 72 2.3.2.4.6. Phân đoạn ................................................................................... - 73 2.3.2.4.7. Thông tin bootstrap .................................................................... - 73 2.3.2.4.8. Điểm truy cập ngẫu nhiên .......................................................... - 75 2.3.2.4.9. Lược đồ dẫn xuất URL .............................................................. - 75 2.4. Tiêu chuẩn MSS........................................................................................... - 76 2.4.1. Giới thiệu tổng quan ............................................................................. - 76 2.4.2. Tiêu chuẩn và triển khai ...................................................................... - 77 2.4.2.1. Smooth Streaming playback với Silverlight .................................... - 77 2.4.2.2. Kiến trúc của Smooth Streaming ..................................................... - 78 2.4.2.2.1. Giới thiệu định dạng Smooth Streaming ................................... - 78 2.4.2.2.2. Định dạng file đĩa Smooth Streaming........................................ - 78 2.4.2.2.3. Định dạng file dây Smooth streaming ....................................... - 80 2.4.2.2.4. Các tài sản truyền thông Smooth Streaming .............................. - 80 2.4.2.2.5. Các file manifest Smooth streaming .......................................... - 82 2.4.2.2.6. Smooth Streaming Playback ...................................................... - 82 2.4.3. Tổng lƣợc về MSS ................................................................................. - 84 2.5. Tổng kết Chƣơng 2 ...................................................................................... - 84 2.5.1. HLS của Apple ...................................................................................... - 84 2.5.2. MSS của Microsoft ............................................................................... - 85 2.5.3. HDS của Adobe ..................................................................................... - 85 2.5.4. MPEG-DASH của MPEG .................................................................... - 86 2.5.5. Kết luận ................................................................................................. - 87 CHƢƠNG 3 NGHIÊN CỨU VÀ THỰC NGHIỆM TRUYỀN VIDEO
STREAMING TRÊN HTTP 2.0 ....................................................................... - 88 3.1. Các nghiên cứu thử nghiệm trong nƣớc và quốc tế ................................. - 88 3.1.1. Phƣơng pháp cải tiến trải nghiệm Live streaming thích nghi dựa trên
HTTP 2.0 (nhóm nghiên cứu tại Bỉ) [13] ...................................................... - 88 -
V
3.1.1.1. Các lý do để nghiên cứu và đề xuất ................................................. - 88 3.1.1.2. HAS thông qua HTTP 2.0................................................................ - 89 3.1.1.3. Các nguyên nhân gốc rễ của vấn đề QoE của HAS......................... - 90 3.1.1.4. Các phương pháp cải thiện QoE dựa trên HTTP 2.0 ....................... - 91 3.1.1.4.1. Kết thúc luồng ............................................................................ - 91 3.1.1.4.2. Ghép kênh Request/response và sự ưu tiên luồng ..................... - 92 3.1.1.4.3. Server Push ................................................................................ - 93 3.1.1.4.4. Ứng dụng trong Live Streaming ................................................ - 98 3.1.2. Giảm trễ Streaming Video trực tiếp thơng qua HTTP 2.0 (nhóm
nghiên cứu của hãng Adobe) [5] .................................................................. - 100 3.1.2.1. Vấn đề trễ trong Video stream trực tiếp qua HTTP....................... - 100 3.1.2.2. Ứng dụng tính năng Server push trong HTTP 2.0 ......................... - 101 3.1.2.3. Thiết lập kiến trúc hệ thống thử nghiệm:....................................... - 102 3.1.2.4. Kết quả thử nghiệm: ...................................................................... - 103 3.2. Thực nghiệm HLS qua giao thức HTTP 2.0 ........................................... - 104 3.2.1. Mục tiêu thực nghiệm......................................................................... - 104 3.2.2. Mơ hình hệ thống thực nghiệm ......................................................... - 105 3.2.2.1. Mơ hình .......................................................................................... - 105 3.2.2.2. Giải thích mơ hình ......................................................................... - 105 3.2.2.3. Các thiết lập hệ thống {Tham khảo phụ lục 1,2&3} ..................... - 106 3.2.3. Kết quả thực nghiệm và đánh giá .......................................................... 107
3.2.3.1. Kết quả thu được tại các client thơng qua trình duyệt firefox, chrome,
safari
107
3.2.3.2. Kết quả thu được thông qua capture bằng wireshack ......................... 113
3.2.3.2.1. Capture tại port ethernet của Client .............................................. 113
3.2.3.2.2. Capture tại port ethernet của server .............................................. 114
3.2.3.3. Kết quả thu được qua log access NGINX server ................................ 118
3.3. Kết luận Chƣơng 3 ......................................................................................... 121
KẾT LUẬN ............................................................................................................ 122
CÁC TÀI LIỆU THAM KHẢO........................................................................... 124
CÁC PHỤ LỤC ..................................................................................................... 126
Phụ lục 1: Thiết lập hệ thống transcoder ............................................................ 126
VI
Phụ lục 2: Cài đặt hệ thống NGINX server ........................................................ 132
Phụ lục 3 : Tạo file cấu hình của NGINX ........................................................... 133
VII
DANH MỤC CÁC HÌNH VẼ
Hình 1.1. Chi tiết bản tin request/response trong trường hợp pipelining .............. - 6 Hình 1.2. Head-of-Line Blocking trong HTTP 1.1 ................................................ - 7 Hình 1.3. Quá trình phát triển, hình thành giao thức HTTP 2.0 .......................... - 12 Hình 1.4. Vị trí của giao thức HTTP2 trong mơ hình phân lớp IP ...................... - 13 Hình 1.5. Các luồng trong kết nối của HTTP 2.0 ................................................ - 13 Hình 1.6. Thứ tự khung trong đa luồng ............................................................... - 13 Hình 1.7. Thứ tự khung trong luồng đơn ............................................................. - 13 Hình 1.8. Cấu trúc Frame HTTP 2.0 .................................................................... - 14 Hình 1.9. Dạng dữ liệu trong một request của HTTP 1.1 và HTTP 2.0 .............. - 15 Hình 1.10. Mơ phỏng ghép kênh kết nối trong giao thức HTTP 2.0 ................... - 16 Hình 1.11. Mô phỏng workflow kết nối giữa client và server trong giao thức HTTP
1.1 và HTTP 2.0 ..................................................................................................- 17 Hình 1.12. Lưu đồ của một trao đổi Request/response của HTTP 2.0 ................ - 18 Hình 1.13. Biểu đồ của trao đổi Request/response với điều khiển lưu lượng ..... - 19 Hình 1.14. Mô phỏng kết nối đơn TCP giữa client (web browser) và server với tính
năng push của HTTP 2.0 ...................................................................................... - 20 Hình 1.15. Kết quả truyền thơng giữa server và client có HTTP 2.0 server push - 20 Hình 1.16. Cơ chế trao đổi giữa client và server.................................................. - 21 Hình 1.17. Lưu đồ trao đổi yêu cầu/ áp ứng trao đổi với server push ................. - 22 Hình 1.18. Lưu đồ khi kết thúc luồng server push ............................................... - 23 Hình 1.19. Phương thức hoạt động pipelining ..................................................... - 23 Hình 2.1. Quá trình thực hiện của phương pháp MPEG-DASH..........................- 27 Hình 2.2. Mơ tả một ví dụ đơn giản về Adaptive streaming. ..............................- 28 Hình 2.3. Cấu trúc MPD. ............................... .....................................................- 30 Hình 2.4. Mơ hình dữ liệu phân cấp MPD............................... ............................- 31 Hình 2.5. Mơ tả các trường thơng tin trong MPD............................... ................- 32 Hình 2.6. Mơ tả profile Dash container............................... ................................- 43 Hình 2.7. Cấu trúc tổng quan hệ thống HLS............................... ........................- 48 Hình 2.8. Nội dung một file “m3u8” đơn giản............................... .....................- 50 Hình 2.9. File index của một phiên Live, được cập nhật mỗi khi có segment mới- 52
-
VIII
Hình 2.10. Mơ tả các luồng dữ liệu trong HLS....................................................- 55 Hình 2.11. Nội dung một file “m3u8” có luồng dự phịng...................................- 56 Hình 2.12. Quy trình phân phối HDS cho Live và VOD.....................................- 60 Hình 2.13. Giao diện player mẫu OSMF............................... ..............................- 67 Hình 2.14. Cấu trúc phân đoạn nhỏ và segment trong dữ liệu F4F. ....................- 71 Hình 2.15. Cấu trúc phân đoạn trong dữ liệu F4F................................................- 72 Hình 2.16. Hộp thơng tin Bootstrap............................... .....................................- 74 Hình 2.17. Định dạng file Smooth Streaming............................... ......................- 79 Hình 2.18. Định dạng dây Smooth streaming. ....................................................- 80 Hình 2.19. Ví dụ một thư mục chứa một sự trình bày được mã hố Smooth
Streaming. ................................................................. .........................................- 81 Hình 3.1. Mơ hình triển khai thử nghiệm phương pháp full push.......................- 93 Hình 3.2. Sơ đồ sequence của HAS khi có và khơng có phương pháp full-push dựa
trên HTTP 2.0 ............................... ............................... ...................................- 97 Hình 3.3. Sơ đồ trễ tồn trình trong Video streaming qua HTTP......................- 100 Hình 3.4. Độ trễ tại bộ đệm của Client..... .........................................................- 100 Hình 3.5. Các thành phần tài nguyên khác nhau của HTTP..............................- 101 Hình 3.6. Workflow giữa server và client khi dùng tính năng Push..................- 101 Hình 3.7. Sơ đồ mơ hình kiến trúc hệ thống thử nghệm....................................- 102 Hình 3.8. Sơ đồ ứng dụng thực tế thử nghiệm...................................................- 103 Hình 3.9. Biểu đồ so sánh kết quả độ trễ giữa có và khơng có server push.......- 103 Hình 3.10. Biểu đồ so sánh kết quả số lượng overhead và request giữa có và khơng
có server push .................................................................................................. - 104 Hình 3.11. Mơ hình thực nghiệm Video streaming trên HTTP 2.0...................- 105 Hình 3.12. Play video streaming trên HTTP 2.0 thơng qua các client khác nhau..107
Hình 3.13. Play video streaming trên HTTP 2.0 thông qua firefox trên PC..........107
Hình 3.14. Play video streaming trên HTTP 1.1 thơng qua firefox trên PC..........108
Hình 3.15. Play trên một PC bằng hai giao thức HTTP 2.0 (trái) và HTTP 1.1 (phải)
................................................................................................................................108
Hình 3.16. Request/response manifest file hls.m3u8..............................................109
Hình 3.17. Request/response file live3_.m3u8.......................................................110
Hình 3.18. Request/response file live3_.ts.............................................................110
IX
Hình 3.19. Request/response file live1_.m3u8.......................................................111
Hình 3.20. Request/response file live1_.ts kế tiếp..................................................111
Hình 3.21. Request/response file live1_.m3u8 kế tiếp......... ..................................112
Hình 3.22. Thơng lượng vào ra trên port mạng của PC client sau 50s đầu tiên sau
khi play ...................................................................................................................113
Hình 3.23. Thơng lượng vào ra trên port mạng của PC client sau 700s.................114
Hình 3.24. Mơ hình thực nghiệm và phân tích giao tiếp của server bằng Wireshark
................................................................................................................................115
Hình 3.25. Kết quả giám sát server port bằng wireshark với frame thứ 5502........115
Hình 3.26. Kết quả giám sát server port bằng wireshark với frame thứ 18522......116
Hình 3.27. Kết quả giám sát server port bằng wireshark với frame thứ 35392......116
Hình 3.28. Kết quả giám sát server port bằng wireshark với HTTP 1.1................117
Hình 3.29. Cấu hình nhận luồng input...................................................................126
Hình 3.30. Cấu hình tạo Output Group HLS..........................................................126
Hình 3.31. Cấu hình tạo Out Stream 1 HLS...........................................................127
Hình 3.32. Cấu hình tạo Out Stream 2 HLS...........................................................127
Hình 3.33. Cấu hình tạo Out Stream 3 HLS...........................................................128
Hình 3.34. Cấu hình thơng số nén video H.264 cho stream 1................................129
Hình 3.35. Cấu hình thơng số nén video H.264 cho stream 2................................130
Hình 3.36. Cấu hình thơng số nén video H.264 cho stream 3................................131
Hình 3.37. Thơng tin các module NGINX 1.13.9 đã được cài đặt hỗ trợ HTTP
2.0............................................................................................................................132
X
DANH MỤC CÁC BẢNG BIỂU
Bảng 2.1. Khuyến nghị cấu hình dạng MIME ..................................................... - 51 Bảng 2.2. Bảng so sánh một số điểm khác nhau giữa HDS và RTMP Dynamic
Streaming.............................................................................................................- 59 Bảng 2.3. Các khuyến nghị khoảng thời gian keyframe ...................................... - 63 Bảng 2.4. Bảng so sánh tính năng giữa RTMP Dynamic Streaming, HPD và HDS
..................................... ......................................................................................... - 64 Bảng 2.5. Bảng thông tin tổng quan về các công cụ của Adobe.......................... - 65 Bảng 2.6. Bảng các dịch vụ sẵn sàng hỗ trợ HDS ............................................... - 69 Bảng 2.7. Bảng thơng tin đặc tính định dạng file đối với HDS ........................... - 70 Bảng 2.8. Bảng tóm tắt các thành phần cấu thành định dạng file F4F ................ - 71 Bảng 2.9. Bảng thông tin các dữ liệu Bootstrap .................................................. - 74 Bảng 2.10. So sánh các tính năng giữa HLS, MSS,HDS và DASH .................... - 87 -
XI
DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT
TT Chữ viết tắt Tiếng Anh
1 3GPP
Tiếng Việt
Third Generation Partnership
Project
Dự án đối tác thế hệ thứ 3
2 A/V
audio/video
Âm thanh/Hình ảnh
3 AAC
Advanced Audio Coding
Mã hóa âm thanh tiên tiến
4 ADTS
Audio Data Transport Stream
5 AES
Advanced Encryption Standard
6 ALPN
Application-Layer Protocol
Negotiation
Luồng truyền tải dữ liệu âm
thanh
Tiêu chuẩn mã hóa tiên tiến
Giao thức TLS mở rộng cho
các thỏa thuận giao thức lớp
ứng dụng
Application Program Interface
Giao diện lập trình ứng dụng
American Standard Code for
Chuẩn mã trao đổi thông tin
Information Interchange
Hoa Kỳ
9 ASF
Advanced Systems Format
Định dạng hệ thống tiên tiến
10 CDN
Content Delivery Network
Mạng phân phối nội dung
CERN - European Organisation
Tổ chức Nghiên cứu Hạt nhân
for Nuclear Research
châu Âu
Common Media Application
Định dạng ứng dụng truyền
Format
thông chung
13 CPU
Central Processing Unit
Khối xử lý trung tâm
14 CSS
Cascading Style Sheets
Các tập tin định kiểu theo tầng
7 API
8 ASCII
11 CERN
12 CMAF
15 DASH-AVC DASH Advanced Video Coding
16 DECE
Digital Entertainment Content
Ecosystem
Mã hóa Video tiên tiến của
DASH
Hệ sinh thái nội dung giải trí số
17 DNS
Domain Name System
Hệ thống tên miền
18 DRM
Digital rights management
Quản lý bản quyền số
XII
19 DSL
Digital Subscriber Line
Đường dây thuê bao số
20 F4F
Flash MP4 Video Fragment
Phân mảnh Video MP4 Flash
21 GOP
Group of Picture
22 HAS
HTTP Adaptive Streaming
23 HD
High-definition
24 HDS
HTTP dynamic Streaming
Nhóm hình ảnh, là 1 nhóm các
khung hình trong Video
Phát Video thích nghi thống
qua HTTP
Độ phân dải cao
Giao thức streaming qua HTTP
của Adobe
High-Efficiency Advanced
Mã hóa âm thanh tiên tiến hiệu
Audio Coding V2
suất cao phiên bản 2
26 HEVC
High Efficiency Video Coding
Mã hóa hình ảnh hiệu suất cao
27 HLS
HTTP Live Streaming
28 HPD
HTTP Progressive Download
29 HTML
HyperText Markup Language
30 HTTP
Hypertext Transfer Protocol
31 HTTP WG
HTTP Work Group
Nhóm nghiên cứu HTTP
32 HTTP-NG
HTTP-Next Generation
HTTP thế hệ kế tiếp
33 HTTPS
HTTP with Secure
HTTP có bảo mật
34 IDR
Instantaneous Decoder Refresh
Làm tươi giải mã tức thời
IESG-Internet Engineering
Tổ chức điều hành kỹ thuật
Steering Group
Internet
25 HE-AAC v2
35 IESG
Giao thức streaming qua HTTP
của Apple
Tải xuống tuần tự qua HTTP
Ngôn ngữ Đánh dấu Siêu văn
bản
Giao thức truyền tải siêu văn
bản
36 IETF
Internet Engineering Task Force Nhóm Kỹ thuật Internet
37 IIS
Internet Information Services
38 iOS
iPhone Operation System
39 IPTV
Internet Protocol Television
XIII
Dịch vụ thông tin Internet
Hệ điều hành dùng cho các
dịng Iphone
Truyền hình giao thức internet
40 ISO BMFF
ISO base media file format
The International Organization
41 ISO/IEC
for Standardization/
International Electrotechnical
Commission's
42 ISPs
Internet Service Providers
43 KID
Key ID
44 MAF
Media Application Format
Định dạng tệp truyền thông cơ
sở ISO
Tổ chức quốc tế về tiêu chuẩn
hóa/Ủy ban kỹ thuật điện tử
quốc tế
Các nhà cung cấp dịch vụ
Internet
Số nhận dạng khoá chung
Định dạng ứng dụng truyền
thông
Multipurpose Internet Mail
Giao thức mở rộng thư điện tử
Extensions
Internet đa mục đích
46 MP3
MPEG-1 layer 3
Chuẩn nén Audio MPEG1 lớp 3
47 MPD
Media Presentation Description
48 MPEG
Moving Picture Experts Group
49 MPEG2-TS
MPEG2 transport stream
Luồng truyền tải MPEG2
MPEG-
MPEG Dynamic Adaptive
Giao thức streaming qua HTTP
DASH
Streaming over HTTP
của MPEG
51 MSE
Media Source Extensions
Sự mở rộng nguồn truyền thông
52 MSS
Microsoft Smooth Streaming
45 MIME
50
Mơ tả sự trình diễn truyền
thơng
Nhóm các chun gia hình ảnh
động
Giao thức streaming qua HTTP
của Microsoft
Mã hóa hình ảnh đa xem, là
53 MVC
Multiview Video Coding
một tiêu chuẩn mã hóa video
lập thể để nén video
54 NGINX
EngineX
Phần mềm Server Web
55 OIPF
Open IPTV Forum
Diễn đàn IPTV mở
XIV
56 OSMF
Open Source Media Framework
Khung làm việc truyền thông
mã nguồn mở
Thuật ngữ chỉ các ứng dụng
57 OTT
cung cấp nội dung hoạt động
Over The Top
dựa trên nền tảng Internet
58 OVP
Open Video Player
Trình chơi video mở
59 P2P
Peer-to-Peer
Mạng ngang hàng
60 PC
Personal Computer
Máy tính cá nhân
61 PSNR
Peak Signal-to-Noise Ratio
Tỷ số tín hiệu đỉnh trên nhiễu
Protection System Specific
Tiêu đề cụ thể của hệ thống bảo
Header
vệ
63 QoE
Quality of Experience
Chất lượng trải nghiệm
64 RDA
Rate Determination Algorithm
Thuật toán xác định tốc độ
65 RFC
Request for Comments
66 RTMFP
Real-time Media Flow Protocol
67 RTMP
Real Time Messaging Protocol
62 PSSH
68 RTMPe/SWF
Real Time Media Protocol
Encrypted / Small Web Format
Đề nghị duyệt thảo và bình
luận
Giao thức luồng truyền thông
thời gian thực
Giao thức truyền bản tin thời
gian thực
Giao thức truyền thơng thời
gian thực được mã hóa/ ĐỊnh
dạng Web nhỏ
69 RTP
Real Time Protocol
Giao thức thời gian thực
70 RTSP
Real Time Streaming Protocol
Giao thức phát thời gian thực
71 RTT
Round-trip time
Thời gian 1 vịng chu trình
72 SCTE 35
73 SDK
Society of Cable and
Telecommunications Engineers
Software Development Kit
XV
Là 1 tiêu chuẩn để trèn tín hiệu
quảng cáo vào 1 luồng truyền
tải
Bộ phát triển phần mềm
Society of Motion Pictures and
Hiệp hội các chuyên gia truyền
Television Engineers - Timed
hình và ảnh động - Văn bản
Text
được định thời
75 SPDY
Speedy
Công nghệ SPDY
76 SSL
Secure Sockets Layer
Tầng ổ bảo mật
77 SVC
Scalable Video Coding (SVC)
78 SWF
Shockwave Flash
79 TCP
Transmission Control Protocol
Giao thức điều khiển truyền
TCP/IP-Transmission Control
Giảo thức điều khiển truyền
Protocol/Intenet Protocol
dẫn/Giao thức Internet
81 TLS
Transport Layer Security
Giao thức bảo vệ lớp truyền tải
82 TTL
Time to Live
Thời gian tồn tại
83 UDP
User Datagram Protocol
Giao thức dữ liệu người dùng
84 URI
Uniform Resource Identifier
85 URL
Uniform Resource Locator
86 VOD
Video On-demand
Video theo yêu cầu
87 W3C
World Wide Web Consortium
Hiệp hội Web Toàn cầu
88 WMA
Windows Media Audio
89 XML
Extensible Markup Language
74 SMPTE-TT
80 TCP/IP
90
rộng
Một ứng dụng chụp và chú
thích tự động
XML SMIL XML Synchronized Multimedia
2.0
Má hóa video có khả năng mở
Integration Language 2.0
XVI
Lược đồ định danh tài nguyên
đồng nhất
Trình định vị tài nguyên đồng
nhất
Chuẩn định dạng audio cho
Window
Ngôn ngữ đánh dấu mở rộng
Ngôn ngữ tích hợp đa phương
tiện được đồng bộ hóa XML
2.0
MỞ ĐẦU
Hiện nay, việc truyền tải các kênh truyền hình khơng chỉ trên các cơng nghệ
truyền hình như cáp, truyền hình giao thức internet - IPTV (Internet Protocol
Television), truyền hình vệ tinh mà còn dần đang chuyển sang xu hướng cơng nghệ
mới đó là OTT (Over The Top). Khái niệm OTT đã được biết đến như một công
nghệ phân phối các nội dung trên Internet. OTT được nhắc đến thường gắn liền với
các ứng dụng di động trên nền tảng hệ điều hành Android hay hệ điều hành cho các
thiết bị iPhone (iOS-iPhone Operation System) như Viber, Whatsapp,... Xu hướng
công nghệ này đang lan dần từ mảng di động sang truyền hình với sự xuất hiện của
các SmartTV, SmartBox,...Nhiều đơn vị cung cấp dịch vụ truyền hình đã chuyển
dần từ 1 nền tảng sang đa nền tảng. So với công nghệ truyền tải truyền thống của
IPTV là Giao thức streaming thời gian thực (RTSP-Real Time Streaming Protocol)
và Giao thức dữ liệu người dùng (UDP-User Datagram Protocol) thì OTT sử dụng
giao thức truyền tải siêu văn bản (HTTP-Hypertext Transfer Protocol). HTTP có
khả năng đáp ứng đa định dạng để phù hợp với tất cả các thiết bị đầu cuối sử dụng
dịch vụ OTT như: máy tính cá nhân (PC-Personal Computer), máy tính bảng, điện
thoại, SmartTV, SmartBox. Các đơn vị cung cấp dịch vụ truyền hình, truyền thơng
như VTV, VNPT, Viettel, FPT, … đã và đang phát triển các dịch vụ OTT.
Các tiêu chuẩn Video streaming over HTTP đã được nhiều tổ chức, các hãng
truyền thơng trên thế giới chuẩn hóa như Microsoft Smooth Streaming (MSS);
Apple HTTP live Streaming (HLS); Adobe HTTP Dynamic Streaming (HDS);
MPEG Dynamic Adaptive Streaming over HTTP (MPEG-DASH),…Việc nâng cao
chất lượng dịch vụ để cạnh tranh thu hút khách hàng là ln được trú trọng. Trong
truyền hình, việc rút ngắn độ trễ (latency) đối với trải nghiệm dịch vụ cho người
dùng sẽ đem lại sự hài lòng cho khách hàng sử dụng dịch vụ. Chính vì điều này, đã
có rất nhiều nghiên cứu để cải thiện độ trễ từ camera-to-display, độ trễ ban đầu, trễ
chuyển kênh v.v.. Một trong các chủ đề nghiên cứu liên quan là HTTP 2.0 đã được
chuẩn hóa vào 17/02/2015 bởi Tổ chức điều hành kỹ thuật Internet (IESG-Internet
Engineering Steering Group) và các đặc tả đã được công bố vào tháng 5/2015 là
RFC 7540. Đây là một phiên bản mới của giao thức HTTP cung cấp các tính năng
mới để giảm thời gian tải các nội dung trang web trong trình duyệt web. Việc
nghiên cứu, triển khai ứng dụng Video streaming dựa trên HTTP 2.0 là việc cần
-1-
thiết đối với những người làm về lĩnh vực tryền hình và truyền thơng. Do vậy, tơi đã
chọn đề tài nghiên cứu cho luận văn tốt nghiệp của mình là Nghiên cứu truyền
video streaming trên HTTP 2.0 dưới sự hướng dẫn của Phó Giáo sư, Tiến sĩ Phạm
Ngọc Nam.
Mục đích của đề tài được thể hiện rõ qua tên của đề tài. Trong đó chú trọng
đến 3 nội dung chính là nghiên cứu các giao thức HTTP 1.1 và HTTP 2.0, nghiên
cứu các chuẩn video streaming hiện tại và nghiên cứu video streaming trên HTTP
2.0 đồng thời thực nghiệm trên thực tế để so sánh đánh giá kết quả.
Cấu trúc của luận văn gồm:
- Phần Mở đầu;
- Phần Nội dung: Chương 1,2 và 3;
- Phần Kết luận;
- Phần Tài liệu tham khảo.
- Phần Phụ lục
Nội dung chính của luận văn:
Chương 1: “Tìm hiểu về giao thức HTTP”, tìm hiểu về các chuẩn giao thức HTTP
1.1 và HTTP 2.0.
Chương 2: “Nghiên cứu các tiêu chuẩn Streaming”, tìm hiểu một số cơng nghệ
streaming của một số hãng truyền thông trên thế giới đã được chuẩn hóa là HLS,
MPEG-DASH, HDS và MSS.
Chương 3: “Nghiên cứu và thực nghiệm truyền video streaming trên HTTP 2.0”.
Nghiên cứu cơ chế hoạt động, phương án triển khai, và xem xét một số kết quả
nghiên cứu. Thiết lập hệ thống thực và thử nghiệm ứng dụng truyền video streaming
trên HTTP 2.0 từ Server đến Client. Qua đó phân tích, so sánh đánh giá hiệu quả
với phương thức truyền video streaming trên HTTP 1.1.
Do truyền video streaming trên HTTP là công nghệ mới, phát triển dựa trên nền
tảng công nghệ thông tin, các dịch vụ, ứng dụng một số được hồn thiện và một số
đang trong q trình triển khai hồn thiện nên các đánh giá, lập luận cịn mang tính
chủ quan, chưa chun sâu, tơi mong nhận được sự đóng góp ý kiến của mọi người
quan tâm để luận văn được hồn thiện hơn.
Qua đây, tơi xin bày tỏ lòng biết ơn đối với thầy giáo PGS.TS Phạm Ngọc Nam
và các thầy trong Viện Điện tử - Viễn thơng, gia đình cùng đồng nghiệp tại Cty
-2-
MyTV đã tận tình hướng dẫn, giúp đỡ và tạo điều kiện cho tơi hồn thành bản luận
văn này.
-3-
CHƢƠNG 1
TỔNG QUAN VỀ GIAO THỨC HTTP
Giao thức truyền siêu văn bản (HTTP) là một giao thức ứng dụng cho các hệ
thống thông tin được phân phối, cộng tác và siêu phương tiện. HTTP là nền tảng
của truyền thông dữ liệu cho Web.
Siêu văn bản là văn bản có cấu trúc sử dụng liên kết logic (siêu liên kết) giữa các
nút chứa văn bản. HTTP là giao thức để trao đổi hoặc chuyển siêu văn bản.
Sự phát triển của HTTP được khởi xướng bởi Tim Berners-Lee tại Tổ chức
Nghiên cứu Hạt nhân châu Âu (CERN - European Organisation for Nuclear
Research) vào năm 1989 [8]. Sự phát triển các tiêu chuẩn của HTTP đã được phối
hợp bởi Nhóm Kỹ thuật Internet (IETF - Internet Engineering Task Force) và Hiệp
hội Web Toàn cầu (W3C - World Wide Web Consortium), đã xuất bản một loạt các
Yêu cầu cho Nhận xét (RFC). Định nghĩa đầu tiên của HTTP 1.1, phiên bản HTTP
sử dụng phổ biến, đề cập trong RFC 2068 vào năm 1997, sau thay thế bởi RFC
2616 vào năm 1999 và sau đó một lần nữa bởi RFC 7230 gia đình RFC trong năm
2014.
Phiên bản sau, phiên bản kế thừa HTTP 2.0, đã được chuẩn hóa vào năm 2015
và hiện đã hỗ trợ cho các web server và trình duyệt thơng qua giao thức Bảo vệ lớp
truyền tải (TLS-Transport Layer Security) sử dụng phần mở rộng ALPN
(Application-Layer Protocol Negotiation), trong đó yêu cầu TLS 1.2 trở lên.
Các chức năng HTTP nói chung như là một giao thức u cầu-đáp ứng trong
mơ hình điện toán Client-Server. Client gửi một bản tin yêu cầu HTTP đến Server.
Server, cung cấp các tài nguyên như các tệp Ngôn ngữ Đánh dấu Siêu văn bản
(HTML-HyperText Markup Language) và nội dung khác, hoặc thực hiện các chức
năng khác thay mặt cho Client, trả về một thông báo phản hồi cho Client. Phản hồi
chứa thơng tin trạng thái hồn thành về yêu cầu và cũng có thể chứa nội dung được
yêu cầu trong nội dung bản tin của nó.
HTTP được thiết kế để cho phép các phần tử mạng trung gian cải tiến hoặc cho
phép truyền thông giữa Client và Server. Các trang web có lưu lượng truy cập cao
thường được hưởng lợi từ các Server lưu trữ web cái mà cung cấp nội dung thay
cho các Server để cải thiện thời gian phản hồi. Trình duyệt web lưu trữ các tài
-4-
nguyên web đã truy cập trước đó và sử dụng lại chúng khi có thể để giảm lưu lượng
mạng. Server proxy HTTP tại các biên mạng giành riêng có thể tạo điều kiện truyền
thông cho các Client mà không cần có địa chỉ có khả năng định tuyến tồn cầu,
bằng cách chuyển tiếp bản tin với các Server bên ngoài.
Các tài nguyên HTTP được xác định và đặt trên mạng bởi các trình định vị tài
nguyên đồng nhất (URL-Uniform Resource Locator), sử dụng các lược đồ định
danh tài nguyên đồng nhất (URI-Uniform Resource Identifier) HTTP và HTTPS.
Các URI và siêu liên kết trong các tài liệu HTML tạo thành các tài liệu siêu văn bản
liên kết với nhau.
Trong Chương 1 này sẽ mơ tả khái qt về tính năng cũng như phương thức
hoạt động của HTTP 1.1 và HTTP 2.0
1.1.
Giao thức HTTP 1.1
1.1.1. Lịch sử hình thành
Thuật ngữ siêu văn bản được Ted Nelson đặt ra năm 1965 trong dự án
Xanadu. Tim Berners-Lee và nhóm của ơng tại CERN được ghi nhận có phát minh
ra HTTP đầu tiên cùng với HTML và công nghệ liên quan cho một Server web và
một trình duyệt web dựa trên ký tự. Berners-Lee lần đầu tiên đề xuất dự án
"WorldWideWeb" vào năm 1989 - nay được gọi là World Wide Web. Phiên bản
đầu tiên của giao thức chỉ có một phương thức, cụ thể là GET, yêu cầu một trang từ
một Server. Phản hồi từ Server luôn là trang HTML.
Phiên bản được công bố đầu tiên của HTTP là HTTP V0.9 (1991). Dave
Raggett đã dẫn đầu Nhóm nghiên cứu HTTP (HTTP WG - HTTP Work Group) vào
năm 1995 và muốn mở rộng giao thức với mở rộng các sự vận hành, sự giao dịch
mở rộng hơn, thông tin meta phong phú hơn, gắn với một giao thức bảo mật trở nên
hiệu quả hơn bằng cách thêm các phương thức bổ sung và các trường tiêu đề. RFC
1945 chính thức giới thiệu và cơng nhận HTTP V1.0 vào năm 1996.
HTTP WG đã lên kế hoạch xuất bản các tiêu chuẩn mới vào tháng 12 năm
1995 và hỗ trợ chuẩn HTTP 1.1 chuẩn dựa trên RFC 2068 đang phát triển gọi là
HTTP-NG (HTTP-Next Generation) đã nhanh chóng được các nhà phát triển trình
duyệt chấp nhận nhanh vào đầu năm 1996. Tháng 3 năm 1996, chuẩn HTTP 1.1 đã
được hỗ trợ trong một số trình duyệt trong đó có Internet Explorer 2.0. Tiêu chuẩn
-5-
HTTP 1.1 như được định nghĩa trong RFC 2068 và đã được chính thức phát hành
vào tháng 1 năm 1997. Các cải tiến và cập nhật cho tiêu chuẩn HTTP 1.1 được phát
hành theo RFC 2616 vào tháng 6 năm 1999.
Trong năm 2007, nhóm nghiên cứu HTTPbis đã được hình thành, một phần,
để sửa đổi và làm rõ đặc tả HTTP 1.1. Vào tháng 6 năm 2014, nhóm nghiên cứu đã
phát hành một bản đặc tả kỹ thuật sáu phần đã được cập nhật RFC 2616
1.1.2. Các điểm chính của giao thức HTTP 1.1
Với HTTP 1.0, mỗi yêu cầu sẽ tạo một kết nối và tương ứng sau đó là một đáp ứng
của server. Các yêu cầu kết nối sẽ được đóng lại bởi server sau khi server gửi xong
đáp ứng.
Với HTTP 1.1
-
Servers sẽ duy trì các kết nối
-
Hỗ trợ Pipelining
+ Một Client có thể gửi nhiều request mà khơng cần phải đợi đáp ứng tương
ứng từ server
+ Một server nhất thiết phải đáp ứng trong order giống nhau cái mà nhận được
trong các request .
Hình 1.1. Chi tiết bản tin request/response trong trường hợp pipelining
-6-
Trong Hình 1.1 là một ví dụ cho thấy chi tiết request/response trong trường hợp
pipelining, có 2 request là Request#1và request#2 gửi lên server cùng nhau mà
không cần phải theo trình tự request #2 phải đợi sau khi đáp ứng của request#1.
Server vẫn trả các đáp ứng giống nhau đối với các request giống nhau.
-
HTTP 1.1 dễ xảy ra hiện tượng Head-of-Line Blocking
Hình 1.2. Head-of-Line Blocking trong HTTP 1.1
Trong Hình 1.2 cho thấy các request bị nghẽn lại. Các request tới trước được phía
server xử lý chậm hơn request sau và các request sau nó cũng khơng được response
về ngay mà buộc phải đợi. Đó là hiện tượng Head-of-Line Blocking.
1.1.2.1.
Phiên HTTP
Một phiên HTTP là một chuỗi các giao dịch yêu cầu-đáp ứng mạng. Client
HTTP khởi tạo yêu cầu bằng cách thiết lập kết nối giao thức điều khiển truyền
(TCP-Transmission Control Protocol) đến một cổng cụ thể trên Server (thường là
cổng 80, thỉnh thoảng là cổng 8080). Server HTTP lắng nghe trên cổng đó chờ bản
tin yêu cầu của Client. Khi nhận được yêu cầu, Server sẽ gửi lại một dòng trạng thái
như "HTTP 1.1 200 OK" và một bản tin của riêng nó. Nội dung của bản tin này
thường là tài nguyên được yêu cầu, mặc dù một bản tin lỗi hoặc thơng tin khác cũng
có thể được trả về.
HTTP 1.1 là bản sửa đổi của HTTP ban đầu (HTTP 1.0). Trong HTTP 1.0,
một kết nối riêng biệt với cùng một Server được thực hiện cho mọi yêu cầu tài
nguyên. HTTP 1.1 có thể tái sử dụng kết nối nhiều lần để tải xuống hình ảnh, tập
-7-
lệnh, bảng định kiểu, v.v... sau khi trang đã được gửi. Do đó, các giao tiếp HTTP
1.1 ít bị trễ hơn khi việc thiết lập các kết nối TCP thể hiện chi phí đáng kể.
Dưới đây là một ví dụ một phiên nói chuyện giữa một Client HTTP và một
Server HTTP đang chạy trên địa chỉ www.example.com, cổng 80. Tất cả dữ liệu
được gửi trong một mã hóa dạng văn bản theo Chuẩn trao đổi thông tin của Hoa Kỳ
(ASCII-American Standard Code for Information Interchange), sử dụng hai byte
CR và LF ('\r\n') (CR-Cariage Return, LF-Line Feed) kết thúc dòng ở cuối mỗi
dòng.
Client gửi Yêu cầu:
GET /index.html HTTP 1.1
Host: www.example.com
Trường "host" phân biệt giữa các tên miền (DNS- Domain Name System) - Hệ
thống tên miền khác nhau chung một địa chỉ IP duy nhất, cho phép lưu trữ ảo dựa
trên tên miền. Trong khi nó là tùy chọn trong HTTP 1.0, cịn trong HTTP 1.1 nó là
bắt buộc.
Phản hồi của Server:
HTTP 1.1 200 OK
Date: Mon, 23 May 2018 22:38:34 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 138
Last-Modified: Wed, 08 Jan 2018 23:11:55 GMT
Server: Apache/2.3.3.7 (Unix) (Red-Hat/Linux)
ETag: "3f80f-1b6-3e1cb03b"
Accept-Ranges: bytes
Connection: close
<html>
<head>
<title>An Example Page</title>
</head>
<body>
Hello.
</body>
-8-
</html>
Trường tiêu đề ETag (Entity tag) được sử dụng để xác định xem phiên bản
được lưu trong bộ nhớ cache của tài nguyên được yêu cầu có giống với phiên bản
hiện tại của tài nguyên trên Server hay không. Content-Type chỉ định loại phương
tiện truyền thông Internet của dữ liệu được truyền tải bởi thông điệp HTTP, trong
khi Content-Length cho biết độ dài của nó theo byte. Server web HTTP 1.1 cơng bố
khả năng của nó để đáp ứng các yêu cầu đối với các phạm vi byte nhất định của tài
liệu bằng cách thiết lập trường Accept-Ranges: bytes. Điều này rất hữu ích, nếu
Client chỉ cần có một số phần nhất định của một tài nguyên được gửi bởi Server,
được gọi là phân phát byte. Khi connection:close được gửi đi, nó có nghĩa là Server
web sẽ đóng kết nối TCP ngay lập tức sau khi chuyển trả lời này.
Hầu hết các dòng tiêu đề là tùy chọn. Khi Content-length bị thiếu thì độ dài
được xác định theo các cách khác.
Một Content-Encoding giống như gzip có thể được sử dụng để nén dữ liệu
được truyền đi.
1.1.2.2.
Xác thực HTTP
HTTP cung cấp nhiều lược đồ xác thực như xác thực truy cập cơ bản và xác
thực truy cập thông báo hoạt động thơng qua cơ chế thách thức-đáp ứng, nhờ đó
Server xác định và đưa ra thách thức trước khi cung cấp nội dung được yêu cầu.
HTTP cung cấp một khung chung để kiểm sốt truy cập và xác thực, thơng
qua một bộ mở rộng các lược đồ xác thực thách thức-đáp ứng, cái mà có thể được
sử dụng bởi một Server để thách thức một yêu cầu của Client và bởi một Client để
cung cấp thông tin xác thực.
1.1.2.3.
Các phƣơng pháp yêu cầu của Client
Một yêu cầu HTTP 1.1 được thực hiện bằng sử dụng telnet. Bản tin yêu cầu,
phần tiêu đề phản hồi và nội dung phản hồi được tô sáng.
HTTP định nghĩa các phương pháp để chỉ ra hành động mong muốn được
thực hiện trên tài nguyên đã xác định. Những gì tài nguyên này đại diện, cho dù dữ
liệu đã tồn tại trước đó hoặc dữ liệu được tạo ra tự động, phụ thuộc vào việc triển
khai Server. Thông thường, tài nguyên tương ứng với một tệp hoặc đầu ra của một
-9-