Debugowanie elementów multimedialnych HTML, takich jak <video>
i <audio>
, może być trudne, ponieważ dekodery różnią się pod względem błędów (dekodery sprzętowe są zwykle najbardziej rygorystyczne), zwłaszcza gdy podczas odtwarzania mogą być używane bardziej ezoteryczne funkcje danego kodeka. Na szczęście mamy do dyspozycji wiele narzędzi, które mogą nam w tym pomóc.
Podczas debugowania błędów odtwarzania multimediów najpierw sprawdzamy atrybut MediaError error
w elemencie HTML multimedialnym. Ten atrybut to ogólna wskazówka, co spowodowało błąd odtwarzania multimediów. Właściwość MediaError.code
zwraca wartość liczbową reprezentującą rodzaj błędu, który wystąpił w elemencie multimedialnym. Druga właściwość MediaError.message
może zawierać ciąg znaków z informacjami diagnostycznymi z przeglądarki.
const video = document.querySelector('video');
video.addEventListener('error', () => {
console.log('Error code: ' + video.error.code);
console.log('Error message: ' + video.error.message);
});
Te właściwości są najbardziej przydatne przy analizie danych telemetrycznych, ale nie zawsze udostępniają wystarczającą ilość informacji, by debugować błędy odtwarzania. Ze względu na ochronę prywatności czasami może zostać pominięty pełny tekst błędu.
Aby uzyskać pełne informacje o błędach, użyj opcji „Media Panel” (Panel multimediów) w Narzędziach deweloperskich w Chrome w celu wyświetlenia dzienników multimediów. Znajdziesz tam sporo informacji, takich jak informacje o zdarzeniach, ostrzeżeniach i komunikatach o błędach, które będą przydatne w przypadku błędów odtwarzania multimediów.
Możesz też użyć bezpłatnej aplikacji FFmpeg, aby sprawdzić integralność plików multimedialnych, korzystając z tego polecenia:
ffmpeg -err_detect explode -i <file> -f null -
Oto kilka błędów, które mogą wystąpić w przypadku pliku wideo z nieprawidłowym kodekiem:
[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 Box Structured Wyświetlający to przydatne narzędzie do debugowania problemów ze strumieniem bitów. Niezbędne jest jednak zrozumienie formatu MP4.
Niektóre profesjonalne narzędzia do analizy strumieni wideo, takie jak VQAnalyzer, Elecard StreamEye i CodecVisa, mogą okazać się warte pieniędzy.