Kodax

الصوت والفيديو والتضمين — أساسيات HTML

الصوت والفيديو والتضمين

الفيديو

<video controls width="640" height="360" poster="images/cover.jpg" preload="metadata">
    <source src="videos/intro.webm" type="video/webm">
    <source src="videos/intro.mp4" type="video/mp4">
    <track kind="subtitles" src="videos/intro.ar.vtt" srclang="ar" label="العربية" default>
    متصفحك لا يدعم الفيديو. <a href="videos/intro.mp4">حمّل الفيديو</a>.
</video>

| الخاصية | المعنى |

|---|---|

| controls | أزرار التشغيل — بدونها لا يستطيع المستخدم التحكم |

| poster | صورة تظهر قبل التشغيل |

| preload="metadata" | حمّل المدة والأبعاد فقط، لا الفيديو كله |

| autoplay | تشغيل تلقائي — المتصفحات تمنعه إلا مع muted |

| muted / loop / playsinline | كتم / تكرار / تشغيل داخل الصفحة على iPhone |

- عدة <source>: يختار المتصفح أول صيغة يدعمها.

- النص داخل <video> يظهر فقط للمتصفحات التي لا تدعمه.

- <track>: ملف ترجمة بصيغة WebVTT — مهم للصم ولمن يشاهد بلا صوت.

الصوت

<audio controls preload="none">
    <source src="audio/lesson1.mp3" type="audio/mpeg">
    <source src="audio/lesson1.ogg" type="audio/ogg">
    متصفحك لا يدعم الصوت.
</audio>

للمحتوى الصوتي (بودكاست، درس) وفّر نصاً مكتوباً (transcript) أيضاً للوصولية ومحركات البحث.

الصور المتجاوبة

لماذا يحمّل الجوال صورة بعرض 2000px لشاشة عرضها 400px؟ srcset يعطي المتصفح خيارات:

<img src="images/hero-800.jpg"
     srcset="images/hero-400.jpg 400w, images/hero-800.jpg 800w, images/hero-1600.jpg 1600w"
     sizes="(max-width: 600px) 100vw, 800px"
     alt="طلاب يتعلمون البرمجة" width="800" height="450">

- 400w: العرض الحقيقي للملف بالبكسل.

- sizes: كم سيكون عرض الصورة على الشاشة؛ المتصفح يحسب ويختار أصغر ملف كافٍ (مع مراعاة دقة الشاشة).

picture: صيغ مختلفة أو قص مختلف

<picture>
    <source srcset="images/hero.avif" type="image/avif">
    <source srcset="images/hero.webp" type="image/webp">
    <img src="images/hero.jpg" alt="طلاب يتعلمون البرمجة" width="800" height="450">
</picture>

المتصفح يأخذ أول صيغة يدعمها، و <img> الأخير هو الاحتياط وإلزامي (وفيه alt).

iframe: تضمين صفحة داخل صفحة

<iframe src="https://www.openstreetmap.org/export/embed.html?bbox=44.3,33.2,44.5,33.4"
        width="600" height="400"
        title="خريطة بغداد"
        loading="lazy"></iframe>

- title ضروري: قارئ الشاشة يعلن عن الإطار بعنوانه.

- loading="lazy": لا يُحمّل حتى يقترب المستخدم — الإطارات ثقيلة.

- الأمان: الصفحة المضمّنة كود من موقع آخر. للمحتوى غير الموثوق استخدم sandbox الذي يمنع السكربتات والنماذج إلا ما تسمح به: sandbox="allow-scripts".

- كثير من المواقع تمنع تضمينها (البنوك، جوجل) لحماية مستخدميها من خداع النقر (clickjacking)، فلن تظهر في iframe.

نصائح الأداء

- الفيديو أثقل شيء في الصفحة: ضغطه، و preload="metadata" أو none.

- للفيديوهات الطويلة استخدم منصة (YouTube، Vimeo) وضمّنها بـ iframe بدل رفعها على خادمك.

تمرين

أنشئ صفحة "درس مسجل": فيديو بـ controls و poster ومصدرين، وترجمة عربية، ومقطع صوتي للملخص مع نص مكتوب تحته، وخريطة مضمّنة بـ iframe مع title و loading="lazy".

<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>درس مسجل</title>
</head>
<body>
    <h1>الدرس الأول: مقدمة في الويب</h1>

    <video controls width="640" height="360" poster="images/lesson1-cover.jpg" preload="metadata">
        <source src="videos/lesson1.webm" type="video/webm">
        <source src="videos/lesson1.mp4" type="video/mp4">
        <track kind="subtitles" src="videos/lesson1.ar.vtt" srclang="ar" label="العربية" default>
        متصفحك لا يدعم الفيديو. <a href="videos/lesson1.mp4">حمّل الفيديو</a>.
    </video>

    <h2>ملخص صوتي</h2>
    <audio controls preload="none">
        <source src="audio/summary.mp3" type="audio/mpeg">
        متصفحك لا يدعم الصوت.
    </audio>
    <details>
        <summary>النص المكتوب</summary>
        <p>في هذا الدرس تعرفنا على HTML و CSS و JavaScript ودور كل منها.</p>
    </details>

    <h2>موقع المعهد</h2>
    <iframe src="https://www.openstreetmap.org/export/embed.html?bbox=44.3,33.2,44.5,33.4"
            width="600" height="400" title="خريطة موقع المعهد في بغداد" loading="lazy"></iframe>
</body>
</html>
اختبر فهمك