mjpeg --- تسجيل mjpeg

تُستخدَم الوحدة mjpeg لتسجيل mjpeg. استخدمها لتسجيل مقاطع فيديو طويلة كبيانات صور مضغوطة. استخدم gif للمقاطع القصيرة.

مثال على الاستخدام:

import csi
import mjpeg
import time

# Setup camera.
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.QVGA)
csi0.snapshot(time=2000)

# Create the mjpeg object.
m = mjpeg.Mjpeg("example.mjpeg")

# Record for 20 seconds.
start = time.ticks_ms()
while time.ticks_diff(time.ticks_ms(), start) < 20000:
    m.add_frame(csi0.snapshot())

# Finalize.
m.close()

class Mjpeg -- مُسجِّل Mjpeg

class mjpeg.Mjpeg(path: str, width: int | None = None, height: int | None = None)

إنشاء كائن Mjpeg يمكنك إضافة الإطارات إليه.

path هو مسار نظام الملفات لحفظ تسجيل mjpeg فيه.

width هو الدقة الأفقية لملف mjpeg. القيمة الافتراضية هي عرض مخزن الإطارات الرئيسي إن لم يُحدَّد.

height هو الدقة الرأسية لملف mjpeg. القيمة الافتراضية هي ارتفاع مخزن الإطارات الرئيسي إن لم يُحدَّد.

is_closed() bool

تُرجِع True إذا أُغلِق الملف. لا يمكن كتابة المزيد من البيانات إلى ملف مغلق.

width() int

تُرجِع الدقة الأفقية لملف mjpeg.

height() int

تُرجِع الدقة الرأسية لملف mjpeg.

count() int

تُرجِع عدد الإطارات المكتوبة إلى ملف mjpeg.

size() int

تُرجِع حجم ملف mjpeg بالبايت.

add_frame(image: image.Image, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: image.Image | None = None, alpha_palette: image.Image | None = None, hint: int = 0, quality: int = 90) None

إلحاق image بتسجيل mjpeg. تُقاس الصورة تلقائياً مع الحفاظ على نسبة العرض إلى الارتفاع لتطابق الدقة المحدَّدة عند إنشاء الملف. يُقبَل أي تنسيق صورة؛ تقوم هذه الدالة بفك الضغط والقياس/التحويل وإعادة الضغط حسب الحاجة.

roi هو مجموعة مستطيل منطقة الاهتمام (x, y, w, h) من image المراد نسخها. القيمة الافتراضية هي الصورة بأكملها.

rgb_channel هو قناة RGB (0=R، 1=G، 2=B) المراد استخراجها من صورة مصدر RGB565 وعرضها بتدرج الرمادي. القيمة -1 (الافتراضية) تعطّل استخراج القناة.

alpha (0-255) تتحكم في مقدار صورة المصدر المراد مزجها في الوجهة. القيمة 255 معتمة؛ والقيم الأقل تمزج مع خلفية سوداء؛ والقيمة 0 تنتج إطاراً أسود.

color_palette هو إما تعداد لوحة ألوان (مثل image.PALETTE_RAINBOW) أو صورة RGB565 بحجم 256 بكسل تُستخدَم كجدول بحث للألوان على قيمة تدرج الرمادي لصورة المصدر. يُطبَّق بعد استخراج rgb_channel.

alpha_palette هو صورة بتدرج الرمادي بحجم 256 بكسل تُستخدَم كجدول بحث لقناة ألفا يضبط alpha لكل بكسل مصدر بناءً على قيمة تدرج الرمادي الخاصة به. القيمة 255 معتمة؛ والقيمة 0 شفافة. يُطبَّق بعد استخراج rgb_channel.

hint هو OR منطقي لـ:

quality (0-100) هي جودة ضغط JPEG المستخدَمة لصور المصدر غير JPEG.

write(image: image.Image, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: image.Image | None = None, alpha_palette: image.Image | None = None, hint: int = 0, quality: int = 90) None

اسم بديل لـ Mjpeg.add_frame().

sync() None

تفريغ ملف mjpeg إلى القرص مع إبقائه مفتوحاً لمزيد من عمليات الكتابة. استدعِها دورياً لضمان حفظ البيانات.

close() None

إنهاء تسجيل mjpeg. يجب استدعاؤها بمجرد اكتمال التسجيل لجعل الملف قابلاً للعرض.