توضّح هذه الصفحة الأنواع المختلفة للمساحات التي يمكن استخدامها لتشغيل الفيديو باستخدام 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
لتشغيل الفيديو:
- انخفاض استهلاك الطاقة بشكل كبير على العديد من الأجهزة
- توقيت أكثر دقة للّقطات، ما يؤدي إلى تشغيل الفيديو بسلاسة أكبر
- إتاحة إخراج فيديوهات بنطاق عالي الديناميكية بجودة أعلى على الأجهزة المتوافقة
- إتاحة إخراج آمن عند تشغيل محتوى محمي بموجب إدارة الحقوق الرقمية
- إمكانية عرض محتوى الفيديو بالدقة الكاملة للشاشة على أجهزة Android TV التي تُحسِّن طبقة واجهة المستخدم
لذلك، يجب تفضيل SurfaceView
على TextureView
كلما أمكن.
يجب عدم استخدام TextureView
إلا إذا لم تكن SurfaceView
تستوفي احتياجاتك. أحد مثالي على ذلك هو استخدام الرسومات المتحركة السلسة أو الانتقال السلس على سطح الفيديو
قبل Android 7.0 (مستوى واجهة برمجة التطبيقات 24)، كما هو موضّح في الملاحظات التالية. في
هذه الحالة، يُفضَّل استخدام TextureView
فقط عندما يكون SDK_INT
أقل
من 24 (Android 7.0) وSurfaceView
في الحالات الأخرى.
اختيار نوع سطح في ميزة "الإنشاء"
في Compose، يستخدم حلّ التشغيل التفاعلي AndroidView
Composable لتغليف
SurfaceView
وTextureView
. العنصران المكوّنان اللذان يتوافقان مع
هما AndroidExternalSurface
وAndroidEmbeddedExternalSurface
.
توفّر وحدة Media3 ui-compose
عنصرًا قابلاً للتجميع من النوع PlayerSurface
يربط
Player
بعنصر Surface
بطريقة تراعي مراحل النشاط. أنواع السطوح
في هذه الحالة هي:
SURFACE_TYPE_SURFACE_VIEW
(AndroidExternalSurface
)SURFACE_TYPE_TEXTURE_VIEW
(بشكل فعّالAndroidEmbeddedExternalSurface
)
لا يتوفّر النوع none
، لأنّ ذلك سيؤدي إلى عدم تضمين
PlayerSurface
في شجرة واجهة مستخدم ميزة "الإنشاء".