Skip to content
Clooney Network Clooney Network Book a Platform Demo

SourceBuffer.buffered thể hiện những khoảng thời gian media nào đã có sẵn?

Published
Author
Publication Clooney Network
Tóm tắt

SourceBuffer.buffered cho biết những khoảng thời gian media hiện được biểu diễn là đã có trong buffer của đối tượng SourceBuffer. Giá trị được trình bày như TimeRanges, có thể gồm nhiều đoạn tách biệt thay vì một dải liên tục. MDN mô tả API Media Source Extensions và đặc tả MSE 2 của W3C trình bày mô hình nền tảng; chúng giải thích API, không tiết lộ bộ phát của một dịch vụ cụ thể hay chất lượng mạng của người xem.

Điểm chínhbuffered là danh sách khoảng thời gian, không phải tốc độ tải [1] · TimeRanges có thể gồm nhiều khoảng rời nhau · Khoảng buffer phụ thuộc dữ liệu được thêm và quản lý · API không tự mô tả trải nghiệm phát của mọi dịch vụ [2] · Cần đọc cùng currentTime và trạng thái phát khi chẩn đoán

buffered mô tả điều gì?

Trong Media Source Extensions, ứng dụng có thể đưa các đoạn dữ liệu media vào SourceBuffer để trình duyệt xử lý. Thuộc tính buffered cho biết các phạm vi thời gian mà dữ liệu đang được xem là sẵn có trong buffer đó. Đây là thông tin về thời gian media, không phải số byte đã tải trên giây và cũng không phải phần trăm video chắc chắn sẽ phát không gián đoạn. MDN trình bày API MSE cùng các đối tượng liên quan; nên đọc định nghĩa thuộc tính trong ngữ cảnh của API thay vì xem nó như một chỉ số mạng tổng quát.

Một đối tượng TimeRanges có thể có số lượng phạm vi bằng không, một hoặc nhiều hơn. Mỗi phạm vi có điểm bắt đầu và kết thúc theo trục thời gian media. Ứng dụng có thể duyệt từng phạm vi, thay vì giả định chỉ tồn tại một đoạn từ đầu video đến cuối buffer. Nếu dữ liệu bị xóa, thêm theo từng mảnh hoặc chưa liên tục, các khoảng rời nhau là điều cần xét đến trong cách diễn giải.

Vì sao các khoảng không liên tục?

Dữ liệu thường được thêm theo đoạn, và ứng dụng có thể quyết định cửa sổ nào cần giữ lại. Một đoạn trước đó có thể đã bị loại khỏi buffer để quản lý bộ nhớ, trong khi đoạn tiếp theo đã được nạp. Khi đó, phạm vi còn sẵn không nhất thiết tạo thành một dải duy nhất. Các thay đổi cũng có thể diễn ra trong lúc mã JavaScript đang đọc thuộc tính; vì vậy một ảnh chụp giá trị tại một thời điểm chỉ phản ánh trạng thái lúc đọc, không phải lịch sử đầy đủ.

Illustration: Vì sao các khoảng không liên Decorative illustration for the section "Vì sao các khoảng không liên"; visual only, carries no data.

Đặc tả Media Source Extensions 2 của W3C mô tả các giao diện và xử lý trong mô hình MSE. Hãy dùng đúng thuật ngữ của đặc tả để phân biệt thời gian media, bộ đệm của từng SourceBuffer và hành vi của ứng dụng. Một trang có thể dùng nhiều buffer, chẳng hạn cho các track riêng; việc nhìn vào một SourceBuffer không nhất thiết mô tả mọi dữ liệu âm thanh và hình ảnh đang có. Điều này đặc biệt quan trọng khi phân tích một player tự xây dựng.

Đọc TimeRanges an toàn

Trước khi truy cập start(index) hoặc end(index), đọc length để biết số phạm vi hiện có. Sau đó duyệt từng chỉ số hợp lệ và ghi lại thời điểm quan sát, currentTime của media element, readyState cùng trạng thái phát. Nếu length bằng không, đừng gọi start(0) như thể luôn có một vùng; API có thể báo lỗi khi chỉ số nằm ngoài phạm vi. Nếu thu log theo chu kỳ, lưu thời điểm lấy mẫu để so sánh thay đổi, đồng thời tránh kết luận từ một lần đọc duy nhất.

Các số thời gian nằm trên dòng thời gian media. Chúng không tự cho biết thời điểm tải dữ liệu qua mạng, độ trễ đầu-cuối hay tốc độ kết nối. Muốn khảo sát tải, cần theo dõi thêm yêu cầu mạng, kích thước phản hồi và thời điểm nhận dữ liệu; muốn khảo sát phát, đối chiếu currentTime và các sự kiện của media element. Mỗi phép đo trả lời một câu hỏi khác nhau, vì thế nên ghi rõ đang kiểm tra buffer, tải hay phát lại.

Không suy rộng API thành lời hứa dịch vụ

Tài liệu trình duyệt và tiêu chuẩn mô tả hành vi của giao diện lập trình trong phạm vi được nêu. Chúng không chứng minh một trang cụ thể sử dụng MSE, cấu hình buffer theo cách nào, hoặc có hỗ trợ mọi trình duyệt. Player có thể dùng một kiến trúc khác, hoặc xử lý phần dữ liệu qua nhiều thành phần. Nếu viết hướng dẫn cho người dùng cuối, hãy nói đây là cách kiểm tra trong ứng dụng có sử dụng SourceBuffer, không phải thao tác áp dụng cho mọi video.

Illustration: Không suy rộng API thành lời hứa Decorative illustration for the section "Không suy rộng API thành lời hứa"; visual only, carries no data.

Khi báo lỗi, cung cấp trình duyệt và phiên bản, hệ điều hành, bước tái hiện, trạng thái mạng và chuỗi giá trị đã ghi. Nếu dữ liệu nhạy cảm hoặc thuộc trang có thông tin cá nhân, loại bỏ URL riêng tư và nội dung phiên trước khi chia sẻ. Không đăng một biểu đồ buffer rồi kết luận ngay rằng nhà mạng chậm; cần dữ liệu tương ứng để phân biệt tải mạng, giải mã, chính sách xóa buffer hoặc lỗi mã ứng dụng.

Theo dõi livestream thể thao

Nếu bạn đang tìm nội dung thể thao thay vì khảo sát API, có thể xem Trang KLIVE về livestream esports hôm nay. Hãy kiểm tra trực tiếp nội dung và trạng thái đang hiển thị; khái niệm SourceBuffer ở trên không xác nhận player cụ thể của trang dùng API nào.

Với nhu cầu theo dõi thể thao trực tiếp, bạn có thể mở Trang KLIVE về livestream esports hôm nay; bài viết không suy đoán lịch hay tính năng của nền tảng.

Nguồn tham khảo

  1. MDN — Media Source Extensions API
  2. W3C — Media Source Extensions 2

Câu hỏi thường gặp

buffered có cho biết tốc độ Internet không?

Không. Nó biểu diễn phạm vi thời gian media hiện có trong buffer của SourceBuffer, không phải phép đo throughput mạng.

Vì sao buffered có thể chứa nhiều khoảng?

Dữ liệu được thêm theo đoạn hoặc phạm vi cũ bị loại bỏ có thể khiến các vùng sẵn có không liên tục.

Có thể áp dụng giải thích này cho mọi trang video không?

Không. Chỉ dùng khi ứng dụng liên quan thực sự sử dụng Media Source Extensions và cần xét cách triển khai cụ thể.

Continue exploring

See how teams run agents as one production system.