Gỡ lỗi phát nội dung đa phương tiện trên web

François Beaufort
François Beaufort

Việc gỡ lỗi các phần tử nội dung đa phương tiện HTML, chẳng hạn như <video><audio>, có thể khó khăn vì cách triển khai bộ giải mã khác nhau tuỳ theo lỗi mà chúng coi là lỗi (bộ giải mã phần cứng thường nghiêm ngặt nhất), đặc biệt là khi phát có thể sử dụng các tính năng phức tạp hơn của một bộ mã hoá và giải mã cụ thể. May mắn thay, chúng ta có thể tận dụng nhiều công cụ để hỗ trợ.

Khi gỡ lỗi lỗi phát nội dung nghe nhìn, điều đầu tiên chúng ta thường kiểm tra là thuộc tính MediaError error trên phần tử nội dung nghe nhìn HTML. Thuộc tính này cung cấp thêm gợi ý về nguyên nhân gây ra lỗi phát nội dung nghe nhìn. Thuộc tính MediaError.code trả về một giá trị số biểu thị loại lỗi xảy ra trên một phần tử nội dung nghe nhìn. Thuộc tính khác MediaError.message có thể cung cấp một chuỗi với một số thông tin chẩn đoán từ trình duyệt.

const video = document.querySelector('video');
video.addEventListener('error', () => {
  console.log('Error code: ' + video.error.code);
  console.log('Error message: ' + video.error.message);
});

Các thuộc tính này hữu ích nhất cho việc phân tích dữ liệu đo từ xa và không phải lúc nào cũng cung cấp đủ thông tin để gỡ lỗi phát. Để bảo vệ quyền riêng tư, đôi khi bạn phải bỏ qua văn bản lỗi đầy đủ.

Để xem thông tin đầy đủ về lỗi, hãy sử dụng "Bảng điều khiển nội dung nghe nhìn" trong Công cụ của Chrome cho nhà phát triển để xem nhật ký nội dung nghe nhìn. Bạn sẽ tìm thấy nhiều thông tin như sự kiện, cảnh báo và thông báo lỗi, giúp cung cấp gợi ý hữu ích về các lỗi phát nội dung nghe nhìn.

Ảnh chụp màn hình của Bảng điều khiển nội dung đa phương tiện trong Công cụ của Chrome cho nhà phát triển
Bảng điều khiển nội dung nghe nhìn trong Công cụ của Chrome cho nhà phát triển.

Bạn cũng có thể dùng ứng dụng miễn phí FFmpeg để kiểm tra tính toàn vẹn của tệp đa phương tiện nhờ lệnh sau:

ffmpeg -err_detect explode -i <file> -f null -

Dưới đây là một số lỗi bạn có thể gặp phải khi dùng các lệnh này đối với tệp video có bộ mã hoá và giải mã không hợp lệ:

[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc62df05380] Could not find codec parameters for stream 0 (Video: none (zzzz / 0x7A7A7A7A), none(smpte170m/smpte170m/bt709, progressive), 320x240, 4 kb/s): unknown codec
Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options
[matroska,webm @ 0x7fd45b705380] Unknown EBML doctype '0000'
[matroska,webm @ 0x7f8d17904d40] Element at 0x8b ending at 0x10400000095 exceeds containing master element ending at 0x9b
Truncating packet of size 9069 to 94

Trình xem cấu trúc hộp MP4Box.js / ISOBMFF là một công cụ hữu ích để gỡ lỗi các vấn đề về luồng bit. Tuy nhiên, bạn phải hiểu rõ về MP4 thì mới dùng được.

Cuối cùng, một vài công cụ chuyên nghiệp để phân tích luồng video như VQAnalyzer, Elecard StreamEyeCodecian CodecVisa có thể đáng giá với số tiền bạn bỏ ra.