Web'de medya oynatma hatalarını ayıklama

François Beaufort
François Beaufort

<video> ve <audio> gibi HTML medya öğelerinde hata ayıklama, kod çözücü uygulamalarının hata olarak kabul edilme şekline bağlı olarak (donanım kod çözücüler genellikle en katı olanlardır), özellikle de oynatma işlemi belirli bir codec'in daha fazla ezoterik özelliğini kullandığında zor olabilir. Neyse ki bizim açımızdan yardımcı olmak için yararlanabileceğimiz çeşitli araçlar var.

Medya oynatma hatalarını ayıklarken genellikle kontrol ettiğimiz ilk şey HTML medya öğesindeki MediaError error özelliğidir. Bu özellik, medya oynatma hatasının nedenine dair genel bir ipucudur. MediaError.code özelliği, bir medya öğesinde meydana gelen hata türünü temsil eden sayısal bir değer döndürür. Diğer MediaError.message özelliği, tarayıcıdan bazı teşhis bilgilerini içeren bir dize sağlayabilir.

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

Bu özellikler en çok telemetri analizi için yararlıdır ve oynatma hatalarını ayıklamak için her zaman yeterli bilgi sağlamayabilir. Gizlilik nedeniyle, hata metninin bazen tam olarak atlanması gerekir.

Hata bilgilerinin tamamına erişmek için Chrome Geliştirici Araçları "Medya Paneli"ni kullanarak medya günlüklerini görüntüleyebilirsiniz. Medya oynatma hatalarına ilişkin bazı iyi ipuçları veren etkinlikler, uyarılar ve hata mesajları gibi pek çok bilgi bulabilirsiniz.

Chrome Geliştirici Araçları&#39;ndaki Medya Paneli ekran görüntüsü
Chrome Geliştirici Araçları'ndaki Medya Paneli.

Aşağıdaki komut sayesinde, ücretsiz FFmpeg uygulamasını medya dosyasının bütünlüğünü kontrol etmek için de kullanabilirsiniz:

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

Geçersiz codec'e sahip bir video dosyasında bu komutları kullanırken karşılaşabileceğiniz bazı hatalar şunlardır:

[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 Kutu Yapısı Görüntüleyici, bit akışı sorunlarında hata ayıklamak için yararlı bir araçtır. Ancak MP4'ü anlamanız gerekir.

Son olarak, VQAnalyzer, Elecard StreamEye ve Codecian CodecVisa gibi bazı video akışı analiz profesyonel araçları verdiğiniz paraya değebilir.