Technical Tutorial

لماذا يتم تخزين الفيديو مؤقتًا دائمًا في أسوأ اللحظات؟ الكشف عن القوة الخفية وراء البث العالمي: HLS

هل سبق لك أن تساءلت عما يحدث بالفعل خلف دائرة التخزين المؤقت هذه؟ ولا يقتصر الأمر على سرعة الإنترنت السيئة فحسب. إنه سباق تتابع معقد يسمى HLS.

31 ديسمبر 2025·4 دقيقة قراءة

صورة هذا:

أنت تجلس على الأريكة، تحبس أنفاسك وأنت تشاهد ركلات الترجيح النهائية لكأس العالم. يركض ميسي ويرفع قدمه استعدادًا للضرب، وفجأة تتجمد الشاشة. تظهر دائرة دوارة في وسط الشاشة.

في تلك اللحظة، تريد تحطيم التلفزيون، أليس كذلك؟

الإحباط الناتج عن التخزين المؤقت للفيديو كابوس الجميع: دائرة التخزين المؤقت في اللحظة الحاسمة

لقد شهدنا جميعا هذا اليأس. ولكن هل تساءلت يومًا ما الذي يحدث بالفعل خلف تلك “الدائرة العازلة” اللعينة؟ لا يتعلق الأمر فقط بـ “سرعة الإنترنت السيئة”. إنه سباق تتابع معقد يحدث بين جهازك والخوادم والشبكة العالمية.

ونجم هذا السباق هو البروتوكول الذي نناقشه اليوم—HLS (HTTP Live Streaming).

إذا سبق لك استخدام iPhone، أو شاهدت Netflix، أو تصفحت Twitch، أو ببساطة شاهدت أي فيديو على صفحة ويب على هذا الكوكب، فقد استخدمت HLS دون قصد. إنه “هواء” عالم البث المباشر، في كل مكان، ولكن نادرًا ما يتم ملاحظته.

اليوم، سأخذك داخل الصندوق الأسود HLS. سواء كنت شخصًا فضوليًا ترغب في فهم مبادئ الفيديو، أو مطورًا يتطلع إلى إنشاء منصة البث الخاصة بك، ستكون هذه المقالة دليلك النهائي من الصفر إلى البطل.

ما هو HLS؟ (موضح بالبيتزا)

قبل ظهور HLS (حوالي عام 2009)، كانت مشاهدة مقاطع الفيديو عبر الإنترنت تعني عادةً تنزيل الملف بأكمله (مثل MP4 الضخم).

إنه مثل الذهاب إلى مطعم ويدفع النادل ** بيتزا كاملة مقاس 20 بوصة ** في فمك.

  • المشكلة 1: عليك الانتظار حتى تنضج البيتزا بالكامل قبل تناول الطعام (في انتظار التنزيل).
  • المشكلة 2: إذا كنت ممتلئًا في منتصف الطريق (ينقطع اتصال الإنترنت)، فسيتم إهدار بقية البيتزا.
  • المشكلة 3: إذا أردت فجأة نكهة مختلفة (تبديل الدقة)، عليك أن تطلب بيتزا جديدة بالكامل.

HLS حولت “دفع البيتزا” إلى “سوشي بحزام ناقل.”

استعارة البيتزا: التنزيل التقليدي مقابل بث HLS اليسار: وضع التنزيل التقليدي “البيتزا الكاملة”. على اليمين: وضع البث HLS “السوشي بحزام ناقل”

المنطق الأساسي لـ HLS بسيط للغاية، ويتكون من خطوتين فقط:

  1. التقطيع: يعمل الخادم بمثابة “سكين كبيرة”، حيث يقوم بتقطيع فيلم مدته ساعتان إلى عدد لا يحصى من مقاطع مدتها 10 ثوانٍ (عادةً ملفات .ts).
  2. القائمة (قائمة التشغيل): يقوم الخادم بإنشاء ملف فهرس (.m3u8) يخبر اللاعب: “الشريحة الأولى هنا، والشريحة الثانية هناك، والشريحة الثالثة…”

عند النقر فوق تشغيل، يقوم المشغل (المتصفح) بالفعل بما يلي:

  • قم بتنزيل القائمة (أحضر .m3u8).
  • ** قم بتنزيل شريحة البيتزا الأولى ** (أحضر الملف .ts الأول).
  • تناول الشريحة الأولى (تشغيل الفيديو).
  • أثناء تناول الطعام، تناول الشريحة الثانية بهدوء (تحميل مسبق).

ولهذا السبب يعتبر HLS قويًا للغاية: ** فهو يقسم مهمة التنزيل الضخمة إلى عدد لا يحصى من طلبات HTTP الصغيرة.**

مشغل HLS

اختبر رابط M3U8 أو HLS على الإنترنت

الصق رابط البث في مشغل المتصفح وتحقق من التشغيل بدون تثبيت برنامج سطح مكتب.

المثلث الحديدي خلف HLS

ولإنجاح هذه العملية، نحتاج إلى ثلاثة أدوار تعمل في وئام تام:

1. الشيف (الخادم)

مسؤول عن تشفير وتشريح الفيديو الأولي (مثل خلاصة الكاميرا أو ملف MP4). يقوم بإنتاج مقاطع فيديو .ts بشكل مستمر ويقوم بتحديث فهرس .m3u8.

2. النادل (CDN)

هذه هي أكبر ميزة لـ HLS. نظرًا لأن مقاطع HLS هي مجرد ملفات ثابتة عادية (مثل الصور أو HTML)، فيمكن توزيعها باستخدام أي خادم ويب قياسي (Nginx، Apache) وCDN في جميع أنحاء العالم.

  • RTMP (البروتوكول القديم) يتطلب قنوات خاصة ويتم حظره بسهولة بواسطة جدران الحماية.
  • HLS يستخدم المنفذ HTTP القياسي 80، تمامًا مثل تصفح الويب العادي، مع قدرة اختراق ممتازة.

3. العشاء (العميل)

هاتفك أو جهاز الكمبيوتر أو التلفزيون. إنه مسؤول عن تحليل القائمة وتنزيل المقاطع ودمجها معًا بسلاسة للتشغيل.

  • أجهزة Apple: دعم أصلي (تكامل على مستوى النظام).
  • Android/PC: يتطلب عادةً مشغلًا (مثل ExoPlayer أو hls.js).

الغوص العميق: تشريح ملف .m3u8

لا تخافوا من المصطلحات التقنية. الملف .m3u8 هو في الواقع مجرد ملف نصي بسيط. دعونا نلقي نظرة على مثال حقيقي:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
 
#EXTINF:10.0,
segment0.ts
#EXTINF:10.0,
segment1.ts
#EXTINF:10.0,
segment2.ts
 
#EXT-X-ENDLIST

احصل عليه؟ هناك في الواقع ثلاثة أجزاء فقط:

  1. الرأس: يخبر اللاعب “أنا ملف HLS، كل مقطع مدته 10 ثوانٍ كحد أقصى.”
  2. الجسم: قائمة المقاطع المحددة. segment0.ts هو الجزء الأول، segment1.ts هو الجزء الثاني.
  3. التذييل: #EXT-X-ENDLIST يعني “ينتهي الفيديو هنا”. إذا كنت تشاهد بثًا مباشرًا، فلن ترى هذه العلامة لأن القائمة مستمرة في التحديث!

البث المباشر مقابل الطلب: وجهان HLS

HLS يدعم كلا من Video on Demand (VOD) والبث المباشر **، لكنهما يعملان بشكل مختلف قليلاً.

  • VOD (Video on Demand): القائمة ثابتة. مثل الذهاب إلى مطعم، تعرض القائمة ما هو متاح، ويمكنك الانتقال إلى الصفحة الأخيرة في أي وقت (اسحب شريط التقدم إلى النهاية).

  • مباشر: القائمة ديناميكية (نافذة منزلقة). مثل مشاهدة شريط الأسهم التمرير. يقوم الخادم باستمرار بطرد المقاطع القديمة من القائمة وإضافة مقاطع جديدة. يحتاج اللاعب إلى إعادة تنزيل .m3u8 كل بضع ثوانٍ للتحقق من وجود محتوى جديد.

الكاتب: Admin

مقالات ذات صلة

مقالات إضافية مختارة لك عن بث M3U8