Thẻ video HTML báo trạng thái tải và sẵn sàng phát khác nhau thế nào?
HTMLMediaElement cung cấp networkState và readyState để mô tả hai khía cạnh khác nhau của việc phát media. networkState cho biết trạng thái liên quan đến việc phần tử đang lấy tài nguyên hay không; readyState mô tả lượng dữ liệu đã sẵn sàng để phát ở thời điểm quan sát. Vì thế, chúng không phải hai tên cho cùng một tiến trình và cũng không cho biết trực tiếp tốc độ mạng. Đọc đúng từng thuộc tính giúp diễn giải giao diện debug chính xác hơn, nhưng muốn xác định nguyên nhân video dừng vẫn cần xem sự kiện, lỗi, nguồn media và bối cảnh tải.
Điểm chính
- networkState thể hiện trạng thái mạng của HTMLMediaElement, chẳng hạn đang lấy dữ liệu hay chưa chọn nguồn.
- readyState mô tả mức dữ liệu media hiện có và khả năng phát tại thời điểm đó. [1]
- Hai thuộc tính không phải tốc độ tải, bitrate thực tế hay phép đo throughput.
- Giá trị trạng thái là ảnh chụp tại một thời điểm; hãy xem cùng sự kiện, lỗi và tiến trình của player.
networkState nói về trạng thái lấy tài nguyên
networkState là thuộc tính của HTMLMediaElement dùng để biểu thị trạng thái hoạt động mạng của phần tử media. MDN mô tả các giá trị trạng thái của phần tử video HTML và ý nghĩa của chúng. [1] Chẳng hạn, một trạng thái có thể cho biết phần tử chưa chọn nguồn, đang tìm nạp dữ liệu hoặc đã dừng hoạt động mạng. Giá trị cụ thể cần được đọc theo bảng định nghĩa của API, không diễn giải như số đo băng thông.
Một giá trị cho biết đang lấy dữ liệu không nói được dữ liệu đến nhanh tới mức nào, có bị mất gói hay không, hoặc người xem nhận được hình ảnh sau bao lâu. Nó chỉ giúp hiểu hoạt động của media element tại thời điểm truy vấn. Khi người dùng quan sát một trang, thuộc tính có thể thay đổi theo thao tác phát, tạm dừng, thay nguồn hoặc kết thúc tải.
Đừng nhầm networkState với trạng thái kết nối chung của thiết bị. Trình duyệt có thể đang kết nối mạng bình thường trong khi một URL media không phản hồi; ngược lại, phần tử có thể đã nhận một phần dữ liệu trước khi kết nối gặp gián đoạn. Muốn điều tra, cần ghi cả thời điểm, yêu cầu nguồn, sự kiện phát sinh và thông báo lỗi.
readyState nói về dữ liệu có thể dùng
readyState biểu thị mức dữ liệu media mà phần tử hiện có thể sử dụng. Các mức được định nghĩa theo việc chưa có thông tin, đã có dữ liệu cho vị trí hiện tại, có thể bắt đầu phát hay có thể tiếp tục phát mà ít nguy cơ phải dừng để đợi thêm dữ liệu. MDN mô tả thuộc tính và các trạng thái liên quan trong tài liệu phần tử video. [1] Nên dùng tên và ý nghĩa chuẩn của mức trạng thái thay vì suy luận từ màu sắc biểu tượng riêng của một website.
readyState không phải phần trăm hoàn tất của toàn bộ video. Tùy cách truyền media, trình duyệt có thể tải từng phần hoặc nhận dữ liệu theo cơ chế riêng; vì vậy một mức sẵn sàng tại vị trí phát không biểu thị toàn bộ tệp đã được tải. Giá trị cũng có thể thay đổi khi bộ đệm được bổ sung hoặc khi người dùng tua đến vùng chưa có dữ liệu.
Một player có thể báo rằng đang lấy tài nguyên nhưng dữ liệu chưa đủ để phát, hoặc dữ liệu đã đủ bắt đầu phát trong khi việc tải tiếp vẫn diễn ra. Hai trạng thái do đó có thể cùng tồn tại mà không mâu thuẫn: một thuộc tính nói về trạng thái lấy tài nguyên, thuộc tính kia nói về độ sẵn sàng của dữ liệu media.
Kết hợp quan sát, không suy ra throughput
Khi video đứng, hãy xem networkState và readyState cùng thời điểm với sự kiện của phần tử như waiting, stalled, canplay hoặc error nếu công cụ đang sử dụng cung cấp chúng. Ghi nhận URL nguồn ở mức an toàn, thao tác vừa thực hiện và thời điểm trạng thái thay đổi. Không cần chia sẻ URL chứa token truy cập hoặc dữ liệu nhận diện phiên. Một giá trị đơn lẻ không chỉ ra nguyên nhân gốc, nên hãy tránh kết luận rằng mạng chậm chỉ dựa trên readyState thấp.
Muốn đo tốc độ truyền dữ liệu cần phép đo riêng dựa trên số byte và thời gian, đồng thời phải xác định đối tượng đang đo và điều kiện mạng. networkState cùng readyState không cung cấp các đại lượng đó. Tương tự, chúng không chứng minh máy chủ, codec hoặc ứng dụng có lỗi; chúng là tín hiệu API hữu ích để khoanh vùng và cần được ghép với những quan sát phù hợp.
Khi muốn chuyển từ phần giải thích kỹ thuật sang nội dung thể thao, bạn có thể mở Trải nghiệm tỷ số các trận đấu trực tiếp tại KLIVE. Liên kết là điểm đến KLIVE, không phải công cụ đo trạng thái media hay bằng chứng về cách nền tảng triển khai HTML video. Nếu gặp sự cố phát tại một website, hãy ghi nhận thông báo thực tế và dùng kênh hỗ trợ đã xác minh.
Nguồn tham khảo
Câu hỏi thường gặp
networkState có cho biết tốc độ mạng không?
Không. Nó cho biết trạng thái mạng của media element, không phải throughput hay tốc độ tải.
readyState bằng mức có thể phát có nghĩa toàn bộ video đã tải xong không?
Không. Thuộc tính thể hiện mức dữ liệu sẵn sàng theo định nghĩa API, không phải phần trăm tải toàn bộ nội dung.
Vì sao networkState và readyState có thể mô tả tình trạng khác nhau?
Chúng theo dõi hai khía cạnh: hoạt động lấy tài nguyên và mức dữ liệu hiện sẵn sàng. Vì vậy hai giá trị có thể bổ sung nhau mà không mâu thuẫn.
Commission your next hero set.
Tell us the launch, the silhouettes, and the deadline. We’ll return a shot list, a quote, and a confirmed studio date within one business day.