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 các 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 error MediaError trên phần tử nội dung nghe nhìn HTML. Thuộc tính này là gợi ý cấp cao 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 chứa 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. Vì lý do riêng tư, đôi khi bạn phải bỏ qua toàn bộ văn bản lỗi.

Để 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ẽ thấy nhiều thông tin như sự kiện, cảnh báo và thông báo lỗi, giúp bạn biết được một số gợi ý hữu ích về lỗi phát nội dung đa phương tiệ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ể sử dụng ứng dụng miễn phí FFmpeg để kiểm tra tính toàn vẹn của tệp 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 mà bạn có thể gặp phải với 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 cần phải hiểu rõ về MP4 thì mới có thể sử dụng.

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