Nghiên cứu điển hình

Instagram và Facebook cung cấp tính năng phát tức thì và tăng mức độ tương tác của người dùng bằng Media3 PreloadManager

Đọc trong 4 phút

Trong thế giới mạng xã hội không ngừng biến đổi, sự chú ý của người dùng có thể đến và đi rất nhanh. Các ứng dụng của Meta (Facebook và Instagram) là một trong những nền tảng xã hội lớn nhất thế giới và phục vụ hàng tỷ người dùng trên toàn cầu. Đối với Meta, việc phân phối video một cách liền mạch không chỉ là một tính năng mà còn là cốt lõi của trải nghiệm người dùng. Video dạng ngắn, đặc biệt là trên Bảng tin của Facebook và Reels trên Instagram, đã trở thành yếu tố chính thúc đẩy mức độ tương tác. Chúng giúp mọi người thể hiện sự sáng tạo và tiêu thụ nội dung một cách nhanh chóng, đồng thời kết nối và mang đến nội dung giải trí cho mọi người trên khắp thế giới. 

Bài đăng này trên blog sẽ đưa bạn đi qua hành trình Meta chuyển đổi hoạt động phát video cho hàng tỷ người dùng bằng cách cung cấp tính năng phát tức thì thực sự.

Khoảng trống về độ trễ trong video ngắn

Video dạng ngắn dẫn đến các hoạt động tương tác có nhịp độ rất nhanh khi người dùng nhanh chóng cuộn qua nguồn cấp dữ liệu của họ. Việc chuyển đổi liền mạch giữa các video trong một nguồn cấp dữ liệu luôn thay đổi sẽ tạo ra những trở ngại riêng đối với việc phát tức thì. Do đó, chúng ta cần những giải pháp vượt xa bộ nhớ đệm trên đĩa truyền thống và các chiến lược phát lại phản ứng tiêu chuẩn.

Lộ trình phát triển với Media3 PreloadManager

Để giải quyết những thay đổi trong thói quen xem nội dung do sự gia tăng của nội dung dạng ngắn và những hạn chế của cấu trúc phát nội dung dạng dài truyền thống, Jetpack Media3 đã giới thiệu PreloadManager. Thành phần này cho phép nhà phát triển vượt ra ngoài bộ nhớ đệm của ổ đĩa, cung cấp khả năng kiểm soát và tuỳ chỉnh chi tiết để giữ nội dung nghe nhìn sẵn sàng trong bộ nhớ trước khi người dùng nhấn nút phát. Hãy đọc loạt bài viết trên blog này để hiểu rõ các chi tiết kỹ thuật về việc phát nội dung nghe nhìn bằng PreloadManager.

Cách Meta đạt được khả năng phát tức thì thực sự

Các chức năng hiện có

Trước đây, Meta sử dụng kết hợp giữa khởi động (để chuẩn bị cho trình phát) và tìm nạp trước (để lưu nội dung vào bộ nhớ đệm trên đĩa) để phân phối video. Mặc dù những phương pháp này giúp cải thiện hiệu quả của mạng, nhưng chúng cũng gây ra những thách thức đáng kể. Quá trình khởi động yêu cầu khởi tạo nhiều phiên bản trình phát theo trình tự, điều này tiêu tốn đáng kể bộ nhớ và giới hạn việc tải trước chỉ cho một vài video. Nhu cầu cao về tài nguyên này có nghĩa là bạn có thể áp dụng một giải pháp mạnh mẽ có khả năng mở rộng hơn để cung cấp tính năng phát tức thì như mong đợi trên các nguồn cấp dữ liệu xã hội hiện đại, có tốc độ cuộn nhanh.

Tích hợp Media3 PreloadManager

Để đạt được khả năng phát thực sự tức thì, nhóm Media Foundation Client của Meta đã tích hợp Jetpack Media3 PreloadManager vào Facebook và Instagram. Họ chọn DefaultPreloadManager để hợp nhất hệ thống tải trước và phát của mình. Việc tích hợp này đòi hỏi phải tái cấu trúc kiến trúc hiện có của Meta để cho phép chia sẻ tài nguyên hiệu quả giữa các phiên bản PreloadManager và ExoPlayer. Sự thay đổi chiến lược này mang lại một lợi thế kiến trúc quan trọng: khả năng song song hoá các tác vụ tải trước và quản lý nhiều video bằng một phiên bản trình phát duy nhất. Điều này giúp tăng đáng kể khả năng tải trước, đồng thời loại bỏ những phức tạp về bộ nhớ mà phương pháp trước đây gặp phải.

colinKho.png

Tối ưu hoá và điều chỉnh hiệu suất

Sau đó, nhóm đã tiến hành kiểm thử và lặp lại nhiều lần để tối ưu hoá hiệu suất trên hệ sinh thái thiết bị đa dạng trên toàn cầu của Meta. Việc tải trước ban đầu một cách tích cực đôi khi gây ra các vấn đề, bao gồm cả việc tăng mức sử dụng bộ nhớ và giảm hiệu suất cuộn. Để giải quyết vấn đề này, họ đã tinh chỉnh việc triển khai bằng cách đo lường bộ nhớ một cách cẩn thận, xem xét việc phân mảnh thiết bị và điều chỉnh hệ thống cho phù hợp với các mẫu giao diện người dùng cụ thể.

Tinh chỉnh việc triển khai cho các mẫu giao diện người dùng cụ thể

Meta đã áp dụng nhiều chiến lược tải trước và điều chỉnh hành vi cho phù hợp với các mẫu giao diện người dùng cụ thể của từng ứng dụng:

  • Bảng tin trên Facebook: Giao diện người dùng ưu tiên video đang hiển thị. Trình quản lý chỉ tải trước video hiện tại để đảm bảo video bắt đầu phát ngay khi người dùng tạm dừng thao tác cuộn. Chế độ tập trung "chỉ hiện tại" này giảm thiểu dấu vết dữ liệu và bộ nhớ trong môi trường mà người dùng có thể thấy nhiều bài đăng tĩnh giữa các video. Mặc dù hiện tại hệ thống được thiết kế để chỉ tải trước video đang xem, nhưng bạn có thể điều chỉnh để hệ thống cũng tải trước các video sắp tới. 
  • Instagram Reels: Đây là một môi trường chỉ có video, nơi người dùng vuốt theo chiều dọc. Đối với giao diện người dùng này, nhóm đã triển khai chiến lược "tải trước liền kề". PreloadManager giữ các video ngay sau video Shorts hiện tại ở chế độ sẵn sàng trong bộ nhớ. Phương pháp hai chiều này đảm bảo rằng dù người dùng vuốt lên hay xuống, hiệu ứng chuyển đổi vẫn diễn ra tức thì và mượt mà. Kết quả là Chất lượng trải nghiệm (QoE) đã cải thiện đáng kể, bao gồm cả việc cải thiện Thời gian bắt đầu phát và Thời gian hiển thị khung hình đầu tiên cho người dùng.

Mở rộng quy mô cho một hệ sinh thái thiết bị đa dạng trên toàn cầu

Để mở rộng quy mô một ngăn xếp video hiệu suất cao trên hàng tỷ thiết bị, bạn không chỉ cần tải trước một cách tích cực mà còn cần có trí thông minh. Meta gặp phải những thách thức ban đầu về áp lực bộ nhớ và độ trễ khi cuộn, đặc biệt là trên phần cứng tầm trung đến tầm thấp. Để giải quyết vấn đề này, họ đã xây dựng một hệ thống Phát hiện tình trạng căng thẳng của thiết bị dựa trên việc triển khai Media3. Giờ đây, các ứng dụng sẽ giám sát tín hiệu I/O và CPU theo thời gian thực. Nếu thiết bị đang chịu tải lớn, thì quá trình tải trước sẽ tạm dừng để ưu tiên khả năng phản hồi của giao diện người dùng.

Việc tối ưu hoá dựa trên thiết bị này đảm bảo rằng lợi ích của tính năng phát tức thì không ảnh hưởng đến độ ổn định của hệ thống, cho phép ngay cả những người dùng sử dụng phần cứng cũ hơn cũng có thể trải nghiệm một nguồn cấp dữ liệu mượt mà và không bị gián đoạn.

mirabelHu.png

Các thành công về kiến trúc và tình trạng mã

Ngoài các chỉ số dành cho người dùng, việc di chuyển sang Media3 PreloadManager còn mang lại những lợi ích lâu dài về cấu trúc. Mặc dù quá trình tích hợp và điều chỉnh cần nhiều lần lặp lại để cân bằng hiệu suất, nhưng mã nguồn kết quả dễ bảo trì hơn. Nhóm nhận thấy API này tích hợp gọn gàng với hệ sinh thái Media3 hiện có, cho phép chia sẻ tài nguyên hiệu quả hơn.PreloadManager Đối với Meta, việc áp dụng Media3 PreloadManager là một khoản đầu tư chiến lược vào tương lai của việc sử dụng video. 

Bằng cách áp dụng tính năng tải trước và thêm các cổng thông minh cho thiết bị, họ đã tăng tổng thời gian xem trên các ứng dụng của mình và cải thiện mức độ tương tác tổng thể của cộng đồng toàn cầu. 

Tác động đối với Instagram và Facebook

Cấu trúc chủ động này mang lại những điểm cải thiện tức thì và có thể đo lường trên cả hai nền tảng. 

  • Facebook nhận thấy thời gian bắt đầu phát nhanh hơn, tỷ lệ giật khi phát giảm và số phiên phát bị lỗi giảm (chẳng hạn như phát lại, thời gian bắt đầu bị trễ, chất lượng thấp hơn, v.v.), nhờ đó tổng thời gian xem tăng lên. 
  • Instagram nhận thấy thời gian bắt đầu phát nhanh hơn và tổng thời gian xem tăng lên. Việc loại bỏ độ trễ kết hợp (khoảng thời gian từ hành động của người dùng đến khi hiển thị khung hình đầu tiên) đã trực tiếp làm tăng các chỉ số về mức độ tương tác. Ít bị gián đoạn hơn do giảm tình trạng đệm nghĩa là người dùng xem nhiều nội dung hơn, điều này thể hiện qua các chỉ số về mức độ tương tác.
beforeAfterPreload.gif

Những kiến thức quan trọng về kỹ thuật trên quy mô lớn

Khi thói quen thưởng thức nội dung nghe nhìn thay đổi, nhu cầu về trải nghiệm tức thì sẽ tiếp tục tăng lên. Việc triển khai tính năng quản lý bộ nhớ chủ động và tối ưu hoá cho quy mô cũng như sự đa dạng của thiết bị giúp ứng dụng của bạn có thể đáp ứng những kỳ vọng này một cách hiệu quả.

  • Ưu tiên tính năng tải trước thông minh

Tập trung vào việc mang đến trải nghiệm đáng tin cậy bằng cách giảm thiểu tình trạng giật hình và thời gian tải thông qua tính năng tải trước. Thay vì chỉ lưu vào bộ nhớ đệm trên ổ đĩa, việc tận dụng tính năng tải trước ở cấp độ bộ nhớ sẽ đảm bảo nội dung sẵn sàng ngay khi người dùng tương tác với nội dung đó.

  • Điều chỉnh cách triển khai cho phù hợp với các mẫu giao diện người dùng

Tuỳ chỉnh hành vi tải trước theo giao diện người dùng của ứng dụng. Ví dụ: sử dụng tiêu điểm "chỉ hiện tại" cho các nguồn cấp dữ liệu hỗn hợp như Facebook để tiết kiệm bộ nhớ và chiến lược "tải trước liền kề" cho các môi trường dọc như Instagram Reels.

preloadingStrategy.png
  • Khai thác Media3 để đảm bảo tình trạng mã về lâu dài

Việc tích hợp với các API Media3 thay vì giải pháp lưu vào bộ nhớ đệm tuỳ chỉnh giúp chia sẻ tài nguyên tốt hơn giữa trình phát và PreloadManager, cho phép bạn quản lý nhiều video bằng một phiên bản trình phát duy nhất. Điều này giúp tạo ra một cơ sở mã có khả năng thích ứng với tương lai, giúp các nhóm kỹ thuật không chỉ duy trì và tối ưu hoá theo thời gian mà còn tận dụng được các bản cập nhật tính năng mới nhất.

  • Triển khai các chế độ tối ưu hoá nhận biết thiết bị

Mở rộng phạm vi tiếp cận thị trường bằng cách kiểm thử trên nhiều thiết bị, bao gồm cả các mẫu tầm trung đến thấp. Sử dụng các tín hiệu theo thời gian thực như CPU, bộ nhớ và I/O để điều chỉnh các tính năng và mức sử dụng tài nguyên một cách linh hoạt.

Tìm hiểu thêm

Để bắt đầu và tìm hiểu thêm, hãy truy cập vào 

Giờ đây, bạn đã biết những bí quyết để phát ngay. Hãy thử dùng ngay!

Tác giả:

Tiếp tục đọc