“Open-source về cloud-gaming đã thay đổi sự nghiệp của mình, từ Singapore đến Meta US”
Thanh Nguyen Huu - Senior Software Engineer tại Meta (US)
Mình đang làm việc tại team Video Infra ở Meta US, chịu trách nhiệm cho infrastructure của Livestream và Video trên Facebook.
Trước đó mình có chia sẻ làm một dự án open-source về Cloud Gaming được rất nhiều sự quan tâm. Rất nhiều kiến thức mình học được trong side project này cũng liên quan với công việc chính của mình hiện tại ở mảng Video. Bạn nào dân tech chắc cũng từng nghe qua Cloud Gaming có kỹ thuật cũng khá tương đồng với Live-streaming. Cloud Gaming từng được kì vọng là nền tảng chơi game của tương lai, trong đó game sẽ được host ở trên remote server chứ không phải trên máy tính của mình. Khi mình chơi game thì hình ảnh từ phía server remote sẽ stream về máy tính của mình còn input từ phía mình lại gửi ngược lại về server qua network. Đây là một cái kỹ thuật cực khó tại các thao tác trong game là realtime và độ trễ từ người dùng và server phải đủ nhỏ để người dùng không bị lag và trải nghiệm chơi. Giả sử khi bạn ấn một cái nút, mà đến tận 2-3 giây sau nhân vật của bạn mới chạy thì không chấp nhận được. Phản ứng con người từ hình ảnh đến hành động trung bình là 250ms, và chuẩn số khung hình trên s (FPS) là 30fps. Cloud Gaming là bài toán đưa độ trễ về mức tối thiểu song vẫn đảm bảo chất lượng hình ảnh đủ tốt. Ngoài ra thiết kế hệ thống Cloud Gaming đòi hỏi các kiến thức về Kernel, Sandbox, Windows API để tạo môi trường game giả lập tách biệt cho mỗi người chơi, và cũng scale và tối ưu chi phí hạ tầng vì game đòi hỏi rất lớn tài nguyên. Mình viết CloudRetro trước khi Google trình làng Stadia, và khi đó mình từng nghĩ Cloud Gaming là quá bất khả thi với những ràng buộc cực khắc nghiệt vậy.
Tương tự, khi làm ở Live Stream ở Meta, bài toán cũng là sự trade-off giữa độ trễ, sự ổn định và chất lượng video. Ví dụ bài toán nền tảng cơ bản là định dạng của Video. Các định dạng nền tảng trong Video ngày nay là H264, VP9, AV1, sẽ nén (encode/compress) Video một cách tối ưu nhất có thể: đủ nhỏ để hình ảnh được truyền qua mạng và đủ đơn giản để phía users giải nén (decode) trong thời gian cho phép nhưng vẫn giữ chất lượng hình ảnh mong muốn. Ví dụ với Video 30 khung hình 1s, Video sẽ tối ưu để chỉ gửi sự thay đổi giữa mỗi 2 khung hình thay vì gửi toàn bộ các điểm ảnh. Vậy nên với những khung hình chuyển động thay đổi nhiều sẽ ảnh hưởng lớn đến chất lượng đầu ra. Ví dụ nếu bạn video call hay live stream chuyển từ cảnh này qua cảnh khác liên tục, như từ đồng bằng sa mạc sang khu vực đầy tuyết trắng, dữ liệu video sẽ tăng lên đáng kể và có thể gây giật lag. Đây là 1 trong rất nhiều bài toán của Live Stream gặp phải.
Gần đây, mình cũng phải chịu trách nhiệm cho phía Video (VOD) của Meta. Video không đặt nặng độ trễ nhưng lại là bài toán tối ưu dung lượng và trải nghiệm của việc tải lên và xem video. Một file video có thể nặng cả chục GB và bên phía mình phải tối ưu việc tải lên những video này như áp dụng machine learning để tìm ra cấu hình để upload tốt nhất. Mình cũng làm việc với network protocol như HTTP3 để cải thiện tốc độ upload Video ở phía tầng network. Về phía người xem lại là một bài toán không kém phần thử thách. Tùy thuộc vào điều kiện của user lại cần các cấu hình video khác nhau để khi xem Video không có hiện tượng bị đứng hay chất lượng hình ảnh kém. Ví dụ, điện thoại IOS và Android cần định dạng Video khác nhau, tốc độ đường truyền mỗi người đòi hỏi chất lượng khác nhau. Để giải quyết vấn đề này, server sẽ phải tạo nhiều định dạng khác nhau của Video và sẵn sàng để gửi Video với cầu hình phù hợp đến user dựa trên điều kiện của họ. Đó là lí do bạn hay thấy lựa chọn những cái như 720p, 1080p khi xem phim.
Những gì mình chia sẻ chỉ là 1 phần nhỏ và đơn giản hoá các vấn đề trong sự đồ sộ của Video Infrastructure tại Meta. Meta đang không ngừng phát triển thuật toán và hạ tầng để phục vụ nhu cầu Video của hàng tỉ users. Sân chơi video đang trở nên ngày càng sôi động với sự phổ biến của Short Form Video, ngày càng nhiều người muốn xem các video, ngày càng nhiều nền tảng stream phim và ngày càng nhiều content creator muốn sản xuất nội dung. Video là một phần của nền tảng cuộc sống hiện đại và Meta luôn có một Infrastructure sẵn sàng để đón đầu các làn sóng mới.