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ử đa phương tiện HTML, chẳng hạn như <video><audio>, có thể khó khăn vì các cách triển khai bộ giải mã khác nhau về lỗi mà chúng được coi là lỗi (bộ giải mã phần cứng thường là nghiêm ngặt nhất), đặc biệt là khi một lần phát có thể sử dụng nhiều tính năng bí mật hơn của một bộ mã hoá và giải mã cụ thể. Thật may là có nhiều công cụ mà chúng tôi có thể tận dụng để 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ố đại diện cho loại lỗi đã xảy ra trên 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 các 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 đủ.

Để truy cập vào thông tin lỗi đầy đủ, 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 nghe nhì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.