- Ứng dụng Media player
- Thƣ viện xử lý video (Video processing library)
3.4.1 Ứng dụng Media player
Chức năng chính của ứng dụng media player là gửi yêu cầu của ngƣời dùng đến máy chủ MP4_atom_caching, nhận dữ liệu trả về, trình chiếu nội dung video cho ngƣời dùng.
Một ứng dụng media player thƣờng đƣợc xây dựng dựa trên một thƣ viện xử lý video (Video procesing library) để hỗ trợ việc giải mã, xử lý các dòng (âm thanh, hình ảnh) của video.
3.4.2 Thƣ viện xử lý video
Ngoài các thành phần giải mã (decode), mã hóa (encode), chuyển mã (transcode), mux, demux, lọc, xử lý,… Thƣ viện xử lý video còn chứa một thành phần rất quan trọng là plugin MP4_atom_header_caching giúp hỗ trợ việc caching trƣớc tệp tin atom header của các video và xử lý các video đã đƣợc tách thành các tệp tin atom header, và MDAT.
Lƣu đồ hoạt động của plugin MP4_atom_header_caching diễn ra nhƣ sau:
Hình 3.10: Lưu đồ hoạt động của plugin atom header caching ở máy khách
Khi ngƣời dùng yêu cầu một video trên máy chủ MP4_atom_caching, plugin MP4_atom_header_caching ở phía máy khách sẽ tiến hành kiểm tra:
- Nếu trong bộ nhớ cache của máy khách đã có tệp tin atom header của video đó thì tiến hành yêu cầu lấy nội dung atom MDAT còn lại từ máy chủ MP4_atom_caching.
+ Nếu trên máy chủ MP4_atom_caching không tồn tại nội dung atom MDAT của video đó thì thông báo cho ngƣời dùng và thoát.
+ Nếu trên máy chủ MP4_atom_caching tồn tại nội dung atom MDAT của video đó thì tiến hành play video.
- Nếu trong bộ nhớ cache của máy khách chƣa có atom header tệp tin của video đó thì sẽ gửi yêu cầu cho máy chủ MP4_atom_caching để lấy tệp tin atom header và atom MDAT.
+ Nếu một trong 2 tệp tin này không tồn tại trên máy chủ MP4_atom_caching thì thông báo cho ngƣời dùng và thoát
+ Nếu cả 2 tệp tin này tồn tại trên máy chủ MP4_atom_caching thì tiến hành play video đó đồng thời lƣu lại tệp tin atom header vào bộ nhớ cache của máy khách.
3.5 Triển khai
3.5.1 Giao thức truyền tải giữa máy chủ và máy khách
Tác giả đã triển khai phƣơng pháp Atom Caching sử dụng HTTP làm giao thức phân phối luồng dữ liệu đa phƣơng tiện giữa máy chủ MP4_atom_caching và máy khách MP4_atom_caching, sử dụng FTP làm giao thức truyền tải tệp tin giữa máy khách và máy chủ.
Phƣơng pháp Atom Caching sử dụng giao thức HTTP cho việc phân phối video định dạng MP4 do những ƣu điểm của việc streaming video định dạng MP4 sử dụng giao thức HTTP so với các phƣơng pháp streaming sử dụng các giao thức khác nhƣ:
- Streaming video định dạng MP4 sử dụng giao thức HTTP dễ dàng đi qua các bộ định tuyến, tƣờng lửa. Bởi thông thƣờng, các gói tin sử dụng cổng 80 cổng thƣờng dùng cho giao thức HTTP) đều đƣợc tƣờng lửa và các bộ định tuyến mặc định cho phép đi qua.
- Sự bùng nổ của số lƣợng các website trên mạng Internet nói chung và các website chia sẻ video nói riêng giúp phƣơng pháp streaming video định dạng MP4 sử dụng giao thức HTTP phổ biến hơn nhiều so với các phƣơng pháp streaming video MP4 sử dụng các giao thức khác.
- Các khách hàng dễ dàng xây dựng hệ thống streaming định dạng MP4 sử dụng giao thức HTTP. Khách hàng có thể xây dựng một hệ thống streaming chỉ với một máy chủ web và có sử dụng luôn tính năng cache đã đƣợc tích hợp sẵn trên các máy chủ web phổ biến hiện nay (IIS, Apache, Nginx,..).
3.5.2 Triển khai máy chủ MP4_atom_caching
Máy chủ MP4_atom_caching đƣợc tác giả triển khai đồng thời trên một máy chủ vật lý với một ứng dụng HTTP server và một ứng dụng FTP server
Chƣơng trình máy chủ web sử dụng ở đây là Apache (phiên bản dành cho Linux), chƣơng trình máy chủ web mã nguồn mở thông dụng nhất hiện nay. Chƣơng trình máy chủ FTP sử dụng phần mềm vsftp. Ngoài ra máy chủ MP4_atom_caching còn đƣợc cài đặt dịch vụ Mp4_atom_caching, dịch vụ này đƣợc lập trình bằng ngôn ngữ C++ dựa trên bộ thƣ viện mã nguồn mở Bento4 chuyên dùng để xử lý video định dạng MP4.
Bộ thư viện Bento4
Bento4 [17] là một thƣ viện C++ đƣợc thiết kế để giúp đỡ việc đọc và ghi tập tin định dạng MP4 theo các chuẩn ISO/IEC 14496-12, 14496-14 và 14496- 15. Các tập tin MP4 theo các chuẩn này đều dựa trên định dạng tập tin Apple Quicktime. Do đó Bento4 cũng có thể dùng để đọc, ghi hầu hết các tệp tin theo theo định dạng Quicktime.
Bộ thƣ viện Bento4 đƣợc thiết kế cho nhiều nền tảng (Window, Linux, MacOS Android, IOS…). Bento4 rất linh hoạt và dễ dàng sử dụng cũng nhƣ biên dịch vì không sử dụng các thƣ viện bên ngoài.
3.5.3 Triển khai máy khách MP4_atom_caching
Các máy khách đƣợc chia làm 2 loại:
- Máy khách làm nhiệm vụ upload : Là các máy tính đã đƣợc cài đặt phần mềm FTP client, dùng để upload các video lên máy chủ MP4_atom_caching.
- Máy khách streaming: Là các máy tính đã cài đặt đầy đủ bộ thƣ viện xử lý video FFmpeg (đã đƣợc chỉnh sửa) và plugin MP4_atom_header_caching (plugin này đƣợc tác giả lập trình và sử dụng nhƣ một FFmpeg protocol).
Một máy tính có thể vừa là máy khách làm nhiệm vụ upload vừa có thể là ứng dụng streaming client.
Bộ thư viện xử lý video FFmpeg
FFmpeg [18] là một thƣ viện mã nguồn mở, miễn phí, phổ biến, hữu ích, quan trọng nhất liên quan đến vấn đề giải mã (decode), mã hóa (encode), chuyển mã (transcode), mux, demux, lọc, xử lý, truyền và nhận video, audio hiện nay. FFmpeg đƣợc đánh giá cao bởi tốc độ, khả năng hỗ trợ đa môi trƣờng từ window, linux, mac, các thiết bị nhúng cho đến những ứng dụng máy chủ. Ngoài ra với sự uyển chuyển trong cấu trúc, dễ dàng mở rộng và hỗ trợ đa dạng khiến FFmpeg có thể đáp ứng mọi yêu cầu của các nhà phát triển trong vấn đề xử lý truyền thông đa phƣơng tiện.
Bên cạnh tài nguyên tự có của thƣ viện, FFmpeg còn sử dụng rất nhiều các thƣ viện khác bên ngoài khác, có khả năng mở rộng, tích hợp thêm các thành phần nhƣ các loại codec, các bộ lọc filter, …
FFmpeg viết bằng C dựa theo chuẩn ISO C90 và một vài cú pháp của ISO C99, đƣợc xây dựng và biên dịch bằng trình biên dịch GCC.
FFmpeg bao gồm: - Thƣ viện:
+ libavcodec: tổng hợp các bộ nén / mã hóa và giãi nén / giãi mã cho video và audio.
+ libavdevice: tạo nền giao tiếp với các thiết bị, trình quản lý thiết bị nhập xuất video, audio.
+ libavfilter: là tập hợp các thủ tục xử lý, chỉnh sửa, hiệu ứng trên video, audio.
+ libavformat: quản lý các định dạng nhập xuất, cấu trúc tệp tin (avi, mpeg, ...), giao thức truyền nhận audio, video (http, rtp, ...)
+ libswscale: dùng trong việc thay đổi tỉ lệ, co giãn kích cở, chuyển đổi định dạng điểm ảnh, không gian màu ...chử sw đại diện cho software vì thông thƣờng các thao tác này đƣợc hỗ trợ bởi phần cứng hiển thị.
- Giao diện dòng lệnh CLI (Command line interface):
+ FFplay: một ứng dụng nhỏ nhằm play audio, video dùng để thử nghiệm các API của FFmpeg.
+ FFmpeg: ứng dụng có khả năng đọc audio, video từ nhiều nguồn khác nhau, thực hiện xử lý, chuyển đổi, chỉnh sửa và xuất ra các kiểu định dạng khác nhau, phƣơng thức khác nhau.
+ FFprobe: một ứng dụng có khả năng đọc, thu thập thông tin mô tả cả các nguồn đa phƣơng tiện khác nhau và xuất báo cáo một cách trực quan cho ngƣời dùng.
+ Ffserver: có khả năng làm một máy chủ dịch vụ để stream video hoặc âm thanh sử dụng các giao thức nhƣ RTP/RTSP/HTTP.
FFmpeg đang đƣợc rất nhiều dự án, phần mềm xử lý âm thanh, video kỹ thuật số sử dụng nhƣ : VLC media player (initially Video LAN Client), ffdshow, Chromium, Gstreamer,....
Plugin MP4_atom_header_caching đƣợc viết và sử dụng nhƣ một giao thức của FFmpeg (FFmpeg protocol).
FFmpeg protocol :
Ffmpeg protocol [19] là các plugin đƣợc viết riêng cho thƣ viện FFmpeg trong việc xử lý các tài nguyên yêu cầu những giao thức mặc định, các nhà phát triển hoàn toàn có thể dễ dàng tạo ra các giao thức cho riêng mình. Mặc định khi biên dịch FFmpeg, tất cả các giao thức mặc định sẽ đƣợc kích hoạt. Có thể xem toàn bộ giao thức đƣợc kích hoạt bằng tùy chọn“–list-protocols”
-enable-protocol=PROTOCOL : Kích hoạt một giao thức cụ thể -disable-protocol=PROTOCOL: Bỏ kích hoạt một giao thức cụ thể
Do việc sử dụng nhƣ một giao thức của FFmpeg nên việc sử dụng plugin MP4_atom_header_caching cực kỳ đơn giản. Ngƣời dùng chỉ việc gõ lệnh sau khi muốn yêu cầu streaming một video theo phƣơng pháp này (sử dụng ứng dụng FFplay mặc định của FFmpeg làm player):
4 CHƢƠNG IV: Đánh giá hiệu năng của phƣơng pháp Atom Caching
Tác giả đã tiến hành đo đạc thời gian bắt đầu khi khách hàng yêu cầu các video trong trƣờng hợp sử dụng phƣơng pháp đƣợc đề xuất và trong trƣờng hợp không dùng phƣơng pháp đề xuất. Từ các kết quả đó các biểu đồ so sánh thời gian bắt đầu đƣợc đƣa ra nhằm so sánh, đánh giá tính hiệu quả của phƣơng pháp đề xuất.
Thông tin cài đặt hệ thống:
Hình 4.1: Thông tin cài đặt hệ thống đánh giá hiệu năng