> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/arabic/alblwkat-alwzyfyh/blocks-reference/input-output/image-inputs/stream-reader.md).

# Stream Reader

هذا الـ function block يقوم بتشغيل تدفقات الشبكة (YouTube، Twitch، HTTP/RTSP وما شابه) في الخلفية ويحتفظ بأحدث إطار جاهزًا للاستهلاك من قِبل بقية البلوكات. تم تصميمه للمعاينة المستمرة للتدفق والمعالجة اللاحقة مع عناصر تحكم لسرعة التشغيل، الجودة المطلوبة، وتحديد حد معدل الإطارات.

## 📥 المدخلات

هذا الـ function block لا يحتوي على مدخلات.

## 📤 المخرجات

`Image Any`\
أحدث إطار تم استرجاعه من مصدر البث المزوّد (يتحدّث باستمرار أثناء تشغيل التدفق).

## 🕹️ الضوابط (Controls)

`Status`\
يعرض الحالة الحالية ورسائل مفيدة (مثل: waiting, connecting, live, paused, reconnecting).

`Stream URL`\
أدخل عنوان أو رابط التدفق الذي تريد تشغيله (أمثلة: روابط البث العامة، HTTP livestreams، أو روابط المزود).

`Playback speed`\
اضبط معدل التشغيل (النطاق يظهر في واجهة المستخدم). استخدم قيم أقل من 1.0 للحركة البطيئة أو أعلى من 1.0 للتشغيل الأسرع.

`Preferred quality`\
اطلب جودة مفضلة للتدفق عندما تتوفر نسخ متعددة (مثال: Best، 1080p، 720p).

`FPS limit`\
حدد حدًا لمعدل الإطارات الصادرة من هذا البلوك. اضبطه على 0 لاستخدام معدل الإطارات الأصلي للمصدر.

`Pause playback`\
مفتاح للتوقيف المؤقت/المتابعة للتدفق دون إغلاق الاتصال.

## 🎨 الميزات (Features)

* تشغيل في الخلفية: يقوم بتشغيل التدفقات البعيدة في عملية خلفية حتى تظل واجهة المستخدم سريعة مع الاحتفاظ بأحدث إطار متاح.
* تعامل متين مع الاتصال: يعرض رسائل حالة واضحة (connecting, live, paused, reconnecting) ويحاول التعافي من الأخطاء العابرة.
* تحكم في التشغيل: تحكم بسرعة التشغيل واطلب تمثيلًا معينًا عند توفره.
* تحديد معدل الإطارات: خفّض الحمل اللاحق بتحديد سقف للإطارات في الثانية.
* رفع إطارات اختيارية عن بعد: عند التهيئة، يمكن إرسال الإطارات الملتقطة إلى ناقل رفع عن بُعد للتخزين أو التسجيل.
* إيقاف مؤقت دون فقدان الإطار الأخير: الإيقاف المؤقت يحتفظ بآخر إطار متاح للتفتيش أو المعالجة.

## 📝 تعليمات الاستخدام (Usage)

1. أدخل رابط البث في `Stream URL`.
2. اضبط `Preferred quality` إذا أردت تمثيلًا معينًا.
3. حدّد `Playback speed` و `FPS limit` للتحكم في كيفية تسليم التدفق إلى البلوكات التالية.
4. استخدم `Pause playback` لإيقاف تحديثات الإطارات مؤقتًا مع الحفاظ على الاتصال.
5. قم بتوصيل مخرج هذا البلوك `Image Any` إلى بلوكات العرض أو المعالجة لاستهلاك الإطارات الحية.

## 📊 التقييم (Evaluation)

عند التنشيط، يقوم هذا الـ function block بجلب إطارات بشكل مستمر من التدفق المُكوَّن ويوفر أحدث إطار عبر المخرج `Image Any`. تتحدّث رسائل الحالة لتعكس حالة الاتصال. عند التوقيف المؤقت، تتوقف تحديثات الإطارات لكن يبقى آخر إطار متاحًا.

## 💡 نصائح وحيل (Tips and Tricks)

* لمعاينة البث تفاعليًا، قم بتوصيل المخرج `Image Any` إلى بلوك `Show Image` لفتح عارض الصور وفحص الإطارات.
* خفّض حمل CPU/GPU بتوصيل `Image Any` إلى بلوك `Image Resizer` قبل البلوكات الثقيلة على الـ AI مثل `Object Detection (D-FINE)`, `Mask Detection`, `Pose Estimation`.
* للتسجيل طويل الأمد أو التصحيح، مرر المخرج إلى `Record Video`, `Image Logger` أو `Image Write`.
* استخدم `Background Subtractor` على مخرج التدفق لاكتشاف الحركة أو استخراج مناطق المقدمة للمتنبِّهات اللاحقة (مثلاً `Object Detection - Custom`).
* إذا رغبت بالتركيز على منطقة معينة من المشهد، استخدم `Image ROI`, `Image ROI Select` أو `Image ROI Polygon` قبل بلوكات الكشف أو القياس (مثل `Find Object` أو `Histogram On Line`).
* اجمع مع `Object_Detection_Tracker` و `Draw Detections` لتتبع وتصوير الكائنات المكتشفة عبر الإطارات من التدفق.
* للـ OCR على البث المباشر، وصل المخرج إلى `OCR` أو `OCR (EasyOCR)` بعد قص مناسب (`Image ROI Select`) وتحسين الصورة (`Contrast Optimization` أو `Denoising`).
* إذا كان مصدر التدفق كبيرًا أو غير مستقر، جرّب تقليل `FPS limit` أو خفض `Preferred quality` لتحسين الاستقرار وتقليل استهلاك النطاق الترددي.

## 🛠️ استكشاف الأخطاء وإصلاحها (Troubleshooting)

* إذا أظهرت الحالة "Waiting for stream link"، تأكد أن `Stream URL` عبارة عن رابط كامل يتضمن البروتوكول (مثال: `http://`, `https://`, `rtsp://`).
* إذا فشل الاتصال أو أعاد الاتصال بشكل متكرر، جرّب خفض الجودة المطلوبة أو تقليل حد الإطارات لتخفيف النطاق والتحميل.
* إذا توقفت الإطارات عن التحديث بينما تظهر الحالة live، قم بإيقاف ثم تفعيل `Pause playback` لإجبار تحديث.
* إذا احتجت لتصحيح رسائل الاتصال، راقب تسمية `Status` في البلوك للحصول على مؤشرات نصية عن تقدم الاتصال أو الأخطاء.
