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ử phương tiện HTML, chẳng hạn như <video><audio>, có thể khó khăn do việc triển khai bộ giải mã khác nhau về những gì chúng xem 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 lại có thể sử dụng các 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à chúng tôi có thể tận dụng nhiều công cụ khác nhau để trợ giúp.

Khi gỡ lỗi các lỗi phát nội dung đa phương tiện, điều đầu tiên chúng tôi thường kiểm tra là thuộc tính MediaError error trên phần tử nội dung đa phương tiện HTML. Thuộc tính này là một gợi ý ở cấp độ cao về nguyên nhân gây ra lỗi khi phát nội dung đa phương tiệ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 trong phần tử nội dung đa phương tiệ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 đ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 lại. Vì lý do liên quan đến quyền riêng tư, đôi khi bạn phải bỏ qua toàn bộ văn bản lỗi.

Để xem toàn bộ thông tin lỗi, hãy sử dụng "Bảng điều khiển nội dung nghe nhìn" của 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 sẽ cung cấp cho bạn một số gợi ý hay về lỗi phát lại nội dung đa phương tiện.

Ảnh chụp màn hình 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ể sử 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 -

Đối với tệp video có bộ mã hoá và giải mã không hợp lệ, 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:

[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

MP4Box.js / ISOBMFF Trình xem cấu trúc hộp 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 có kiến thức về MP4 thì mới sử dụng được.

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ể xứng đáng với số tiền bạn bỏ ra.