Bối cảnh và vấn đề nghiên cứu
Trong đời sống hiện đại, xem phim trực tuyến đã trở thành một hình thức giải trí phổ biến, mang lại nhiều lợi ích về giảm căng thẳng, nâng cao tri thức văn hóa - lịch sử và mở rộng trải nghiệm xã hội. Sự phát triển của các thiết bị thông minh đòi hỏi các nền tảng phát video trực tuyến phải cung cấp giao diện thuận tiện, linh hoạt và tối ưu hóa trải nghiệm người dùng. Theo số liệu thống kê từ movieguide.org được tác giả trích dẫn, có hơn 70% dân số thường xuyên xem phim trực tuyến. Đồng thời, kết quả khảo sát từ GMO-Z.com RUNSYSTEM ghi nhận hơn 67% người tham gia có sử dụng các nền tảng xem phim có bản quyền, trong đó Netflix chiếm tỷ lệ cao nhất với 41,9%, và hai phương tiện truy cập chủ yếu là máy tính xách tay (Laptop) cùng điện thoại thông minh (SmartPhone).
Xuất phát từ thực tế đó, tác giả lựa chọn đề tài "Xây dựng web và app xem phim tích hợp hệ thống khuyến nghị" nhằm giải quyết bài toán hỗ trợ người dùng tìm kiếm phim phù hợp với sở thích cá nhân một cách nhanh chóng, tiết kiệm thời gian tìm kiếm và nâng cao khả năng giữ chân người dùng trên nền tảng.
Mục tiêu nghiên cứu của đồ án được xác định gồm 3 nhiệm vụ trọng tâm:
- Xây dựng hệ thống quản lý các bộ phim.
- Lên danh sách, cập nhật các bộ phim và sắp xếp theo danh mục, diễn viên, đạo diễn nhằm hỗ trợ tìm kiếm hiệu quả.
- Xây dựng hệ thống gợi ý phim dựa trên thể loại phim người dùng đang theo dõi để cung cấp các nội dung phù hợp.
Đối tượng và phạm vi nghiên cứu:
- Đối tượng nghiên cứu: Khung phát triển ứng dụng đa nền tảng Flutter, hệ sinh thái Backend-as-a-Service Supabase, mô hình hoạt động của ứng dụng xem phim trực tuyến và thuật toán hệ thống khuyến nghị.
- Phạm vi môi trường triển khai: Ứng dụng di động (Mobile) trên hai hệ điều hành iOS, Android và môi trường Web.
- Phạm vi người dùng và quản trị: Hệ thống tập trung xây dựng giao diện tương tác cho người dùng cuối (Client); quyền quản trị viên (Admin) được thực hiện thao tác quản lý trực tiếp trên hệ quản trị cơ sở dữ liệu.
- Phạm vi chức năng: Bao gồm 20 chức năng chính phục vụ xem phim, tìm kiếm từ khóa, quản lý danh sách yêu thích, đánh giá thang điểm 5, xem thông tin đạo diễn/diễn viên, tải phim ngoại tuyến (chỉ trên di động), quản lý hồ sơ và đề xuất phim theo thể loại đang xem.
Cơ sở lý thuyết và phương pháp
Đồ án kết hợp nghiên cứu lý thuyết kỹ thuật phần mềm, mô hình xếp hạng máy học và phương pháp thiết kế hệ thống thông tin:
Thiết kế và triển khai hệ thống
Công nghệ phát triển
- Phát triển giao diện (Frontend): Framework Flutter kết hợp ngôn ngữ lập trình hướng đối tượng Dart. Ứng dụng cơ chế Hot Reload để tối ưu hóa tốc độ lập trình và giao diện dựng sẵn theo phong cách Material Design cùng Cupertino.
- Dịch vụ máy chủ và cơ sở dữ liệu (Backend & Database): Nền tảng Supabase Backend-as-a-Service sử dụng hệ quản trị cơ sở dữ liệu quan hệ PostgreSQL, tích hợp cơ chế bảo mật cấp hàng (Row Level Security - RLS), hệ thống lưu trữ tệp (Storage) và giao diện lập trình ứng dụng tạo tự động (Auto-generated APIs).
- Môi trường phát triển: Công cụ Visual Studio Code.
Khảo sát hiện trạng phần mềm
Để định hình yêu cầu hệ thống, tác giả đã lập bảng so sánh tính năng giữa các dịch vụ xem phim hiện nay:
| Tiêu chí chức năng |
Amazon Prime Video |
Netflix |
Bilibili |
Ứng dụng của đề tài |
| Bắt buộc đăng nhập để sử dụng |
Có |
Có |
Không |
Có |
| Cho phép đăng nhập từ bên thứ 3 |
Không |
Không |
Có |
Không |
| Cho phép bình luận |
Không |
Không |
Có |
Không |
| Cho phép tải xuống |
Có |
Có |
Có (giới hạn 10 lượt/ngày) |
Có (trên Mobile) |
| Đề xuất phim |
Không |
Có |
Không |
Có |
| Lưu thông tin diễn viên |
Có |
Không |
Không |
Có |
| Theo dõi thời lượng đã xem mỗi tập |
Có |
Có |
Không |
Có |
| Đa dạng thể loại |
Có |
Có |
Không |
Có |
| Có thể xem miễn phí |
Không |
Có |
Có |
Có |
Thiết kế cơ sở dữ liệu
Hệ thống dữ liệu quan hệ được xây dựng gồm 10 bảng thực thể và bảng liên kết:
Person: Lưu trữ thông tin cá nhân của các nhân vật tham gia sản xuất phim.
Cast: Lưu danh sách các diễn viên tham gia trong từng bộ phim.
Crew: Lưu danh sách đội ngũ kỹ thuật và đạo diễn của bộ phim.
Film: Lưu trữ các thông tin chi tiết của bộ phim (tiêu đề, tóm tắt nội dung, ngày phát hành, thời lượng).
Gerne: Lưu trữ danh mục các thể loại phim.
Film_Gerne: Bảng liên kết nhiều-nhiều giữa bảng Film và bảng Gerne.
Seasons: Lưu thông tin về các mùa phát sóng của phim bộ.
Episodes: Lưu thông tin chi tiết từng tập phim thuộc các mùa.
Review: Lưu dữ liệu đánh giá và chấm điểm của người dùng cho từng bộ phim.
Profile: Lưu trữ hồ sơ thông tin tài khoản người dùng, email, mật khẩu và ảnh đại diện.
Yêu cầu phi chức năng
- Bảo mật: Bảo vệ thông tin tài khoản người dùng và dữ liệu kinh doanh thông qua chính sách phân quyền Row Level Security.
- Hiệu suất: Tối ưu hóa thời gian thực thi truy vấn dữ liệu và hiển thị kết quả không quá 10 giây trong điều kiện có kết nối Internet.
- Tính khả dụng và ổn định: Đảm bảo hệ thống duy trì kết nối liên tục, giao diện tương thích đồng bộ giữa nền tảng ứng dụng di động và trình duyệt Web.
Nội dung chính theo từng chương
Chương 1: Giới thiệu đề tài
Chương mở đầu phân tích bối cảnh tiêu thụ nội dung số và tính cấp thiết của việc xây dựng nền tảng xem phim trực tuyến có tích hợp khuyến nghị tự động. Tác giả tiến hành khảo sát các nền tảng thương mại gồm Amazon Prime Video, Netflix và Bilibili Video; đồng thời đi sâu phân tích 5 khía cạnh kiến trúc của Netflix bao gồm: kiến trúc hệ thống phân tán, trải nghiệm người dùng tối ưu hóa theo thuật toán máy học, hệ thống quản lý nội dung đa biến thể video/phụ đề, bảo mật - quyền riêng tư và tối ưu hóa hiệu suất truyền phát bằng bộ nhớ đệm (caching). Từ đó, đề tài xác định tập trung xử lý 3 điểm nghẽn tồn tại trong các hệ thống hiện hành: đảm bảo tính mượt mà của đường truyền video, duy trì tính tương thích trên nhiều nền tảng (Web và Mobile) và nâng cao độ chính xác của tính năng gợi ý phim theo thể loại người dùng đang xem.
Chương 2: Nghiên cứu thực nghiệm – Lý thuyết
Chương 2 trình bày chi tiết về hai nền tảng công nghệ cốt lõi cùng cơ sở toán học của hệ thống khuyến nghị:
- Khảo sát Flutter với cấu trúc gồm 2 thành phần chính: bộ công cụ phát triển phần mềm (SDK) biên dịch mã nguồn trực tiếp sang mã máy gốc cho iOS/Android và bộ thư viện giao diện người dùng dựa trên widget. Tác giả phân tích ưu điểm về hiệu năng cao, cơ chế Hot Reload, khả năng chạy giả lập mobile trên nền web; cùng nhược điểm về kích thước bộ nhớ lớn do bộ dựng giao diện (UI Render) viết độc lập với native framework và yêu cầu phải tiếp cận ngôn ngữ Dart.
- Đánh giá nền tảng Supabase với các khối chức năng: PostgreSQL database, đăng ký thời gian thực (Realtime subscriptions), xác thực người dùng (Auth) và API tự động. Tác giả chỉ ra ưu điểm vượt trội so với Firebase trong việc xử lý truy vấn SQL phức tạp, đồng thời nêu hạn chế khi bật cập nhật Realtime sẽ làm mất hiệu lực các chính sách bảo mật cấp hàng (RLS).
- Nghiên cứu cơ chế xếp hạng danh sách (List-wise ranking) kết hợp xác suất hậu nghiệm Bayes và công thức điểm trung bình có trọng số của IMDB Top 250 áp dụng trên tập dữ liệu chuẩn TMDB 5000 Movie Dataset.
Chương 3: Phân tích thiết kế hệ thống
Chương 3 thiết lập các đặc tả kỹ thuật và mô hình hóa hệ thống thông tin:
- Xây dựng danh mục 20 yêu cầu chức năng nghiệp vụ và 5 yêu cầu phi chức năng (giao diện, bảo mật dữ liệu, độ ổn định, hiệu suất truy vấn $\le 10$ giây, tính khả dụng kết nối mạng).
- Xây dựng biểu đồ Use Case tổng quát và chuẩn hóa danh mục 13 Use Case chính từ UC01 đến UC13:
| Mã Use Case |
Tên Use Case |
Tác nhân |
Mô tả tóm tắt |
| UC01 |
Đăng nhập |
User |
Xác thực tài khoản qua email và mật khẩu |
| UC02 |
Quên mật khẩu |
User |
Gửi liên kết khôi phục mật khẩu qua email |
| UC03 |
Đăng ký |
User |
Tạo tài khoản mới kèm email xác nhận |
| UC04 |
Tìm kiếm phim |
User |
Tìm kiếm phim theo từ khóa tiêu đề/thông tin |
| UC05 |
Xem phim |
User |
Trình phát video kèm tùy chỉnh tốc độ, âm lượng, độ sáng |
| UC06 |
Chọn tập phim |
User |
Chọn chuyển đổi tập phim hoặc mùa phim |
| UC07 |
Chỉnh sửa thông tin hồ sơ |
User |
Cập nhật thông tin cá nhân và ảnh đại diện |
| UC08 |
Thêm phim vào danh sách của tôi |
User |
Lưu trữ bộ phim vào danh sách yêu thích cá nhân |
| UC09 |
Tải phim |
User |
Tải dữ liệu tập phim về bộ nhớ di động |
| UC10 |
Đánh giá phim |
User |
Chấm điểm phim theo thang điểm 5 sao |
| UC11 |
Đổi mật khẩu |
User |
Cập nhật mật khẩu bảo mật mới |
| UC12 |
Đăng xuất |
User |
Thoát phiên làm việc của tài khoản |
| UC13 |
Xóa tài khoản |
User |
Xóa vĩnh viễn thông tin tài khoản khỏi hệ thống |
- Xây dựng 13 sơ đồ Activity Diagram tương ứng với từng Use Case và lập bảng đặc tả chi tiết kịch bản luồng sự kiện chính, luồng sự kiện thay thế cùng luồng sự kiện ngoại lệ.
- Thiết kế chi tiết cấu trúc 10 bảng dữ liệu quan hệ trong hệ quản trị cơ sở dữ liệu PostgreSQL.
Chương 4: Xây dựng phần mềm
Chương này mô tả chi tiết kết quả hiện thực hóa giao diện và tính năng trên cả hai nền tảng:
- Giao diện ứng dụng di động (Mobile): Hiện thực hóa 23 màn hình và hộp thoại chức năng gồm: Màn hình Chờ/Giới thiệu, Đăng nhập, Đăng ký, Trang chủ, Hộp thoại Thể loại, Chi tiết Thể loại, Mới và Hot, Tải xuống, Danh sách phim/tập phim tải xuống, Hồ sơ, Đổi mật khẩu, Danh sách của tôi, Chi tiết phim, Đề xuất phim, Diễn viên phim, Đội ngũ sản xuất, Danh sách tập phim, Tải phim, Hộp thoại phim đã tải, Hộp thoại Đánh giá phim, Tìm kiếm phim, Kết quả tìm kiếm, Hộp thoại Đăng xuất và Màn hình Xem phim. Trình phát trên di động tích hợp thanh điều khiển cử chỉ âm lượng, độ sáng, tốc độ phát và nút khóa màn hình chống chạm nhầm.
- Giao diện nền tảng Web: Hiện thực hóa các phân cảnh hiển thị gồm: Trang Mở đầu/Giới thiệu (3 phân cảnh giao diện), Trang chủ Web (2 phân cảnh hiển thị) và Trang Chi tiết phim (2 phân cảnh hiển thị).
- Đánh giá tổng kết: Đánh giá công tác tổ chức quản lý dự án, mức độ hoàn thiện sản phẩm phần mềm và định hình các hướng mở rộng tiếp theo.
Kết quả và đóng góp
Kết quả đạt được
- Xây dựng thành công ứng dụng xem phim hoạt động đồng thời trên hai nền tảng di động (iOS/Android) và trình duyệt Web từ cùng một nền tảng mã nguồn Dart/Flutter.
- Triển khai hoàn chỉnh hệ thống cơ sở dữ liệu đám mây trên Supabase (PostgreSQL) gồm 10 bảng liên kết chặt chẽ, hỗ trợ đầy đủ các thao tác đọc - ghi cho 20 chức năng người dùng.
- Tích hợp thành công mô hình xếp hạng khuyến nghị List-wise và công thức trọng số Bayes IMDB ($m = 25$) áp dụng trên tập dữ liệu TMDB 5000 Movie Dataset, cho phép hiển thị danh sách các bộ phim liên quan dựa trên thể loại của phim người dùng đang theo dõi.
- Cung cấp trải nghiệm xem phim hoàn chỉnh với trình phát đa tính năng: điều chỉnh tốc độ, độ sáng, âm lượng, khóa màn hình và lưu trữ tập phim ngoại tuyến trên thiết bị di động.
Đóng góp của đề tài
- Cung cấp giải pháp xây dựng ứng dụng giải trí đa nền tảng đồng bộ từ thiết kế UI/UX đến kiến trúc cơ sở dữ liệu quan hệ, giúp tiết kiệm chi phí và thời gian phát triển phần mềm.
- Kết hợp thành công dịch vụ Backend-as-a-Service mã nguồn mở (Supabase) thay thế các giải pháp NoSQL truyền thống (như Firebase), giúp thực hiện các truy vấn dữ liệu quan hệ phức tạp và đảm bảo an toàn dữ liệu qua cơ chế Row Level Security.
Hạn chế và hướng nghiên cứu tiếp
Hạn chế
- Giao diện quản trị: Chưa phát triển giao diện đồ họa riêng dành cho Quản trị viên (Admin); mọi thao tác cập nhật dữ liệu phim, danh mục, phân quyền đều phải thao tác trực tiếp trên giao diện cơ sở dữ liệu Supabase.
- Phạm vi khuyến nghị: Hệ thống gợi ý phim mới chỉ dựa trên mức độ tương đồng về thể loại của bộ phim hiện tại kết hợp điểm đánh giá trọng số Bayes, chưa khai thác sâu toàn bộ lịch sử xem phim và hành vi tương tác dài hạn của từng cá nhân người dùng theo thời gian thực.
- Tính năng nền tảng Web: Một số tính năng chuyên biệt như tải phim ngoại tuyến (Download) và khóa màn hình xem phim chỉ mới được hỗ trợ trên ứng dụng di động, chưa có trên phiên bản Web.
Hướng nghiên cứu tiếp
- Xây dựng trang quản trị Web Admin độc lập với đầy đủ các bảng điều khiển quản lý phim, diễn viên, người dùng và phân tích dữ liệu thống kê.
- Nâng cấp mô hình khuyến nghị sang các kiến trúc học sâu (Deep Learning) và học máy tăng cường để cá nhân hóa đề xuất theo hành vi ngữ cảnh thời gian thực của người dùng.
- Tối ưu hóa băng thông, triển khai các kỹ thuật phân mảnh video thích ứng (Adaptive Bitrate Streaming) và nâng cao hiệu năng giao diện Web.
Giá trị tham khảo
Đồ án là tài liệu tham khảo hữu ích cho sinh viên các ngành Công nghệ Phần mềm, Công nghệ Thông tin và Kỹ thuật Phần mềm đang thực hiện đồ án môn học hoặc khóa luận tốt nghiệp về phát triển ứng dụng di động/web đa nền tảng.
Các nội dung có giá trị tham khảo nổi bật bao gồm:
- Quy trình phân tích thiết kế phần mềm: Tài liệu cung cấp hệ thống 13 Use Case và Activity Diagram được mô hình hóa rõ ràng, đi kèm kịch bản luồng sự kiện chi tiết và thiết kế cơ sở dữ liệu quan hệ 10 bảng chuẩn hóa.
- Tích hợp Backend-as-a-Service: Cách thức kết nối và vận hành Supabase (PostgreSQL) thay thế Firebase cho ứng dụng truyền phát nội dung số.
- Thuật toán xếp hạng thực tế: Tài liệu diễn giải cụ thể công thức xác suất hậu nghiệm Bayes và công thức điểm trọng số IMDB Top 250 áp dụng trên dữ liệu thực tế TMDB 5000.
Câu hỏi thường gặp
1. Đồ án sử dụng bộ dữ liệu thực nghiệm nào và bao gồm những thông tin gì?
Đồ án sử dụng bộ dữ liệu "TMDB 5000 Movie Dataset" được trích xuất từ nền tảng The Movie Database (TMDB). Bộ dữ liệu này chứa thông tin của hàng ngàn bộ phim với các thuộc tính bao gồm: đạo diễn, diễn viên, thể loại phim, ngày phát hành, điểm đánh giá và doanh thu.
2. Công thức tính điểm đánh giá có trọng số (Weighted Rating) được thiết lập với tham số $m$ bằng bao nhiêu?
Công thức tính điểm đánh giá có trọng số áp dụng từ mô hình xếp hạng Top 250 của IMDB dựa trên xác suất hậu nghiệm Bayes ($W = \frac{R \cdot v + C \cdot m}{v + m}$) được tác giả thiết lập giá trị số phiếu tối thiểu bắt buộc là $m = 25$.
3. Quản trị viên (Admin) quản lý và cập nhật dữ liệu phim bằng cách nào trong đồ án?
Trong phạm vi hiện tại của đề tài, hệ thống chưa xây dựng trang giao diện quản trị riêng cho Admin. Quản trị viên thực hiện các thao tác quản lý dữ liệu phim, diễn viên và người dùng trực tiếp trên hệ quản trị cơ sở dữ liệu Supabase (PostgreSQL).
4. Hệ thống cơ sở dữ liệu quan hệ của đồ án gồm những bảng nào?
Cơ sở dữ liệu của hệ thống gồm 10 bảng: Person, Cast, Crew, Film, Gerne, Film_Gerne, Seasons, Episodes, Review và Profile.
5. Những tính năng nào chỉ được hỗ trợ riêng trên ứng dụng di động (Mobile)?
Hai chức năng được thiết kế và triển khai dành riêng cho phiên bản ứng dụng di động là tính năng tải phim ngoại tuyến (UC09 - Tải phim / Màn hình danh sách phim tải xuống) và tính năng khóa màn hình khi đang phát video nhằm chống chạm nhầm cử chỉ.
Kết luận
Đồ án "Xây dựng web và app xem phim tích hợp hệ thống khuyến nghị" đã hoàn thành việc nghiên cứu, thiết kế và phát triển một hệ thống phát video đa nền tảng hoàn chỉnh trên môi trường Mobile và Web. Thông qua việc kết hợp công nghệ Flutter, hệ quản trị cơ sở dữ liệu Supabase PostgreSQL và thuật toán xếp hạng trọng số Bayes trên tập dữ liệu TMDB 5000, hệ thống đã đáp ứng 20 chức năng nghiệp vụ từ quản lý xem phim đến đề xuất nội dung tương tự. Mặc dù còn hạn chế về giao diện quản trị Admin và tính năng ngoại tuyến trên Web, đồ án đã cung cấp một tài liệu kỹ thuật hoàn chỉnh và thiết thực cho việc phát triển các ứng dụng truyền phát nội dung số đa nền tảng.