تصحيح أخطاء تشغيل الوسائط على الويب

François Beaufort
François Beaufort

قد يكون من الصعب تصحيح أخطاء عناصر وسائط HTML، مثل <video> و<audio>، لأنّ عمليات تنفيذ برامج فك الترميز تختلف من حيث ما تعتبره أخطاءً (تكون برامج فك ترميز الأجهزة عادةً الأكثر صرامة)، لا سيّما عندما تستخدم عملية التشغيل المزيد من الميزات السرية لبرنامج ترميز معيّن. ولحسن الحظ، هناك مجموعة متنوعة من الأدوات التي يمكننا الاستفادة منها لتقديم المساعدة.

عند تصحيح الأخطاء في تشغيل الوسائط، فإنّ أول ما نتحقّق منه عادةً هو السمة MediaError error على عنصر وسائط HTML. تشير هذه السمة إلى سبب حدوث الخطأ في تشغيل الوسائط. تعرض السمة MediaError.code قيمة رقمية تمثل نوع الخطأ الذي حدث في عنصر وسائط. وقد توفّر السمة الأخرى MediaError.message سلسلة تحتوي على بعض معلومات التشخيص من المتصفّح.

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

هذه السمات مفيدة للغاية لتحليل القياس عن بُعد، وقد لا توفِّر دائمًا معلومات كافية لتصحيح أخطاء التشغيل. لأسباب تتعلق بالخصوصية، يجب أحيانًا حذف نص الخطأ الكامل.

للوصول إلى المعلومات الكاملة عن الخطأ، استخدِم "لوحة الوسائط" في "أدوات مطوري البرامج في Chrome" لعرض سجلات الوسائط. ستجد الكثير من المعلومات مثل الأحداث والتحذيرات ورسائل الخطأ التي ستوفر لك بعض النصائح الجيدة عن أخطاء تشغيل الوسائط.

لقطة شاشة للوحة الوسائط في &quot;أدوات مطوري البرامج في Chrome&quot;
لوحة الوسائط في "أدوات مطوري البرامج في Chrome"

يمكنك أيضًا استخدام تطبيق FFmpeg المجاني من أجل التحقّق من سلامة ملف الوسائط وذلك من خلال استخدام الأمر التالي:

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

في ما يلي بعض الأخطاء التي قد تحدث عند استخدام هذه الأوامر في ملف فيديو يتضمّن برنامج ترميز غير صالح:

[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 أداة مفيدة لتصحيح مشكلات بث البت. ويتطلب ذلك فهم تنسيق MP4 بالفعل.

أخيرًا، يمكنك الاستفادة من بعض الأدوات الاحترافية لتحليل بث الفيديو، مثل VQAnalyzer وElecard StreamEye وCodecian CodecVisa.