Menu
flag Ar iconالعربيةdown icon

الفيديو في HTML: وسم video والتحكم والتشغيل التلقائي

العنصر <video> يشغّل ملفات الفيديو بمشغل المتصفح نفسه. تعلّم البنية، والسمات المهمة (controls وautoplay وmuted وloop وplaysinline وposter وpreload)، والصيغ البديلة بـ <source>، والترجمات بـ <track>، والحجم المتجاوب، والتحكم في التشغيل بـ JavaScript.

تحتوي هذه الصفحة على محررات قابلة للتشغيل - حرّر، شغّل، وشاهد النتيجة فوراً.

كيف تضيف فيديو

اجعل العنصر <video> يشير إلى ملف فيديو وأضف controls كي يستطيع القارئ تشغيله:

<video src="movie.mp4" controls width="640"></video>

controls تُظهر مشغل المتصفح الخاص: التشغيل والإيقاف المؤقت، والشريط الزمني، ومستوى الصوت، وملء الشاشة. من دونها يبقى الفيديو ساكنًا. هذه المعاينة لا تستطيع تحميل ملفات الفيديو، لذلك تغذي الأمثلة في هذه الصفحة العنصر من رسم متحرك صغير على canvas يرسمه سكربت، والسمات تعمل تمامًا كما تعمل مع ملف:

بما أن المصدر بث حي لا ملف، لا يمكن سحب الشريط الزمني هنا ولا توجد مدة ثابتة. أما مع ملف .mp4 حقيقي فيحصل المشغل نفسه على شريط تقديم كامل.

سمات الفيديو

السمةوظيفتها
controlsتُظهر عناصر التحكم في مشغل المتصفح
autoplayيبدأ التشغيل بمجرد الإمكان (عمليًا فقط مع muted)
mutedيبدأ والصوت مكتوم
loopيبدأ من جديد حين ينتهي
playsinlineيُشغَّل داخل الصفحة على iPhone بدلًا من الانتقال إلى ملء الشاشة
poster="thumb.jpg"صورة تظهر قبل تشغيل الفيديو
preloadnone أو metadata (الحجم والمدة فقط) أو auto (المتصفح يقرر كم ينزّل)
width, heightالحجم بالبكسل، وضبطهما معًا يحجز المساحة قبل تحميل الفيديو

التشغيل التلقائي وmuted وloop

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

السمات الأربع تعمل كمجموعة: autoplay للبدء، وmuted كي يسمح المتصفح بذلك، وloop للمقطع المتكرر، وplaysinline كي لا تفتحه أجهزة iPhone بملء الشاشة. الفيديو الذي يعمل تلقائيًا مع الصوت ليس ممنوعًا فحسب، بل هو مشكلة أيضًا لمستخدمي قارئات الشاشة الذين يغرق كلامهم فيه. وإذا استمر مقطع أكثر من خمس ثوانٍ، فأعطِ الناس طريقة لإيقافه مؤقتًا.

صورة الغلاف وpreload

poster تُظهر صورة قبل تشغيل الفيديو، مثل الصورة المصغرة. هنا لا مصدر للفيديو إطلاقًا، فالغلاف هو كل ما يمكن رؤيته:

مع preload="none" لا ينزّل المتصفح شيئًا حتى يضغط القارئ زر التشغيل، والغلاف يمنع المساحة من أن تبدو فارغة. استخدم preload="metadata" حين تريد أن تظهر المدة قبل التشغيل. ومن دون غلاف تُظهر معظم المتصفحات الإطار الأول بعد تحميله.

الصيغ والبدائل بـ source

بدلًا من src يمكنك إدراج عدة ملفات بعناصر <source>. يشغّل المتصفح أول ملف يدعمه:

<video controls width="640" poster="thumb.jpg">
  <source src="movie.webm" type="video/webm">
  <source src="movie.mp4" type="video/mp4">
  <track kind="captions" src="captions.vtt" srclang="en" label="English">
  <p>Your browser cannot play this video. <a href="movie.mp4">Download it</a>.</p>
</video>

MP4 بترميز H.264 يعمل في كل المتصفحات الحالية، فهو الخيار الآمن حين يكون لديك ملف واحد فقط. السمة type تتيح للمتصفح تخطي الصيغ التي لا يستطيع تشغيلها من دون تنزيلها. والنص في النهاية لا يظهر إلا في المتصفحات التي لا تدعم <video> أصلًا.

الترجمات بـ track

<track kind="captions"> يحمّل ملف WebVTT، وهو ملف نصي عادي من أسطر موقوتة. يضيف المتصفح زر ترجمة إلى عناصر التحكم ويرسم النص فوق الفيديو:

WEBVTT

00:00:00.000 --> 00:00:03.000
Welcome to the course.

00:00:03.000 --> 00:00:06.500
Today we build our first web page.

الترجمات تساعد الصم وضعاف السمع، ومن يشاهدون والصوت مغلق، وكل من يتابع فيديو بلغة ثانية. أضف default إلى المسار لإظهاره من دون نقر. وملف الترجمة من نطاق آخر يحتاج إلى ترويسات CORS وcrossorigin على الفيديو.

التنسيق والتحكم بـ JavaScript

الفيديو عنصر مستبدَل مثل الصورة: width: 100% مع height: auto تجعله متجاوبًا، وobject-fit تحدد كيف يملأ صندوقًا بشكل مختلف. تحصل JavaScript على play() وpause() وcurrentTime وvolume وأحداث مثل play وpause وended:

play() تُرجع promise تُرفض حين يمنع المتصفح التشغيل (مثل التشغيل التلقائي غير المكتوم)، لذلك يجب أن تلتقطها شيفرة الإنتاج بـ catch. بناء عناصر تحكم خاصة اختياري، فعناصر controls المدمجة تعمل بلوحة المفاتيح ومترجمة، وعلى الأزرار المخصصة أن تعيد إنتاج ذلك. أما الفيديوهات المستضافة على YouTube أو Vimeo فتضمّن مشغلها بـ iframe بدلًا من ذلك.

أخطاء شائعة

  • التشغيل التلقائي بلا muted. يمنعه المتصفح. أضف muted وplaysinline.
  • نسيان controls. ما لم تبنِ عناصر تحكم خاصة، لا يملك القارئ طريقة لتشغيل الفيديو.
  • غياب width وheight. تقفز الصفحة حين يُحمَّل الفيديو. اضبطهما معًا، ثم غيّر الحجم بـ CSS.
  • ملفات ضخمة. اضغط الفيديوهات للويب واستخدم preload="none" أو "metadata" للفيديوهات الموجودة أسفل الصفحة.
  • فيديوهات فيها كلام بلا ترجمة. أضف <track kind="captions">.

الأسئلة الشائعة

كيف أضيف فيديو في HTML؟

استخدم <video src="movie.mp4" controls width="640"></video>. السمة controls تُظهر زر التشغيل والشريط الزمني ومستوى الصوت في المتصفح. من دونها يُظهر الفيديو إطاره الأول (أو صورة الغلاف) ولا يستطيع المستخدم تشغيله.

لماذا لا يعمل التشغيل التلقائي للفيديو؟

تمنع المتصفحات التشغيل التلقائي مع الصوت. أضف muted بجانب autoplay، وplaysinline كي تشغّله أجهزة iPhone داخل الصفحة بدلًا من ملء الشاشة: <video autoplay muted loop playsinline>.

ما صيغة الفيديو التي أستخدمها للويب؟

MP4 بترميز H.264 يعمل في كل المتصفحات الحالية، فهو الخيار الافتراضي الآمن. يمكنك إدراج ملف WebM أصغر أولًا بـ <source> وترك المتصفح يختار أول صيغة يدعمها.

كيف أضيف صورة مصغرة إلى الفيديو؟

استخدم السمة poster مع عنوان صورة: <video poster="thumb.jpg" controls>. تظهر الصورة حتى يبدأ تشغيل الفيديو.

كيف أضيف ترجمة إلى فيديو HTML؟

أضف <track kind="captions" src="captions.vtt" srclang="en" label="English"> داخل الفيديو. يستخدم الملف صيغة WebVTT، ويُظهر المتصفح زر الترجمة في عناصر التحكم.

كيف أجعل الفيديو متجاوبًا؟

اضبط width: 100% وheight: auto في CSS (أو max-width: 100%). يتكيف الفيديو مع حاويته ويحافظ على نسبة أبعاده.

Coddy programming languages illustration

تعلّم البرمجة مع Coddy

ابدأ الآن