توضّح هذه الصفحة الأنواع المختلفة من مساحات العرض التي يمكن استخدامها لتشغيل الفيديو باستخدام Media3، وكيفية اختيار النوع المناسب لحالة الاستخدام. لمزيد من المعلومات حول عناصر Surface في Android، يمكنك الاطّلاع على مستندات الرسومات هذه.
اختيار نوع مساحة عرض PlayerView
تتيح لك السمة surface_type
الخاصة بالعنصر PlayerView
ضبط نوع
السطح المستخدَم لتشغيل الفيديو. القيم المسموح بها هي:
surface_view
(SurfaceView
)texture_view
(TextureView
)-
spherical_gl_surface_view
(SphericalGLSurfaceView
) - لتشغيل فيديوهات كروية -
video_decoder_gl_surface_view
(VideoDecoderGLSurfaceView
): عرض الفيديو باستخدام أدوات العرض الإضافية -
none
- وهو مخصّص لتشغيل الصوت فقط ويجب استخدامه لتجنُّب الحاجة إلى إنشاء مساحة عرض لأنّ ذلك قد يكون مكلفًا.
إذا كان العرض مخصّصًا لتشغيل الفيديو العادي، يجب استخدام surface_view
أو texture_view
. تقدّم SurfaceView
عددًا من المزايا مقارنةً بـ
TextureView
لتشغيل الفيديوهات:
- انخفاض كبير في استهلاك الطاقة على العديد من الأجهزة
- توقيت أكثر دقة للّقطات، ما يؤدي إلى تشغيل الفيديو بسلاسة أكبر
- إمكانية إخراج فيديوهات HDR بجودة أعلى على الأجهزة المؤهَّلة
- إمكانية إخراج المحتوى المحمي بموجب إدارة الحقوق الرقمية بشكل آمن
- إمكانية عرض محتوى الفيديو بدقة العرض الكاملة على أجهزة Android TV التي تزيد من دقة طبقة واجهة المستخدم
لذلك، يجب تفضيل SurfaceView
على TextureView
كلما أمكن ذلك.
يجب استخدام TextureView
فقط إذا لم تستوفِ SurfaceView
احتياجاتك. أحد الأمثلة على ذلك هو الحالات التي تتطلّب عرض رسوم متحركة سلسة أو تمرير سطح الفيديو بسلاسة قبل الإصدار 7.0 من نظام التشغيل Android (المستوى 24 من واجهة برمجة التطبيقات)، كما هو موضّح في الملاحظات التالية. في هذه الحالة، من الأفضل استخدام TextureView
فقط عندما تكون قيمة SDK_INT
أقل من 24 (الإصدار 7.0 من نظام التشغيل Android) واستخدام SurfaceView
في الحالات الأخرى.
اختيار نوع سطح في Compose
في Compose، يستخدم حلّ التشغيل التفاعلي AndroidView
Composable لتضمين SurfaceView
وTextureView
. إنّ العنصرَين القابلَين للإنشاء اللذين يتوافقان مع ذلك هما AndroidExternalSurface
وAndroidEmbeddedExternalSurface
.
يوفّر وحدة ui-compose
في Media3 عنصر PlayerSurface
قابل للإنشاء يربط Player
بـ Surface
بطريقة تراعي مراحل النشاط. أنواع السطح
في هذه الحالة هي:
SURFACE_TYPE_SURFACE_VIEW
(AndroidExternalSurface
بشكل فعّال)SURFACE_TYPE_TEXTURE_VIEW
(بشكل فعّالAndroidEmbeddedExternalSurface
)
لا يتوفّر النوع none
، لأنّ ذلك يعني عدم تضمين PlayerSurface
في شجرة واجهة مستخدم Compose.