در این صفحه انواع سطوحی که می توان برای پخش ویدیو با Media3 استفاده کرد و نحوه انتخاب نوع مناسب برای مورد استفاده خود توضیح می دهد. برای اطلاعات بیشتر در مورد اشیاء سرفیس در اندروید، این مستندات گرافیکی را بخوانید.
یک نوع سطح برای 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 با کیفیت بالاتر در دستگاه های توانمند.
- پشتیبانی از خروجی ایمن هنگام پخش محتوای محافظت شده با DRM.
- توانایی ارائه محتوای ویدیویی با وضوح کامل نمایشگر در دستگاههای Android TV که لایه رابط کاربری را ارتقا میدهند.
بنابراین SurfaceView
باید در صورت امکان بر TextureView
ترجیح داده شود. TextureView
باید فقط در صورتی استفاده شود که SurfaceView
نیازهای شما را برآورده نکند. یک مثال در جایی است که قبل از Android 7.0 (سطح API 24)، انیمیشن های صاف یا پیمایش سطح ویدیو مورد نیاز است، همانطور که در یادداشت های زیر توضیح داده شده است. برای این مورد، ترجیح داده میشود که TextureView
فقط زمانی استفاده شود که SDK_INT
کمتر از 24 باشد (Android 7.0) و در غیر این صورت SurfaceView
.
یک نوع سطح را در Compose انتخاب کنید
در Compose، راه حل interop از AndroidView
Composable برای بسته بندی SurfaceView
و TextureView
استفاده می کند. دو Composable که با آن مطابقت دارند AndroidExternalSurface
و AndroidEmbeddedExternalSurface
هستند.
ماژول Media3 ui-compose
یک PlayerSurface
Composable را ارائه میکند که Player
را به روشی آگاه از چرخه حیات به یک Surface
متصل میکند. انواع سطوح در این مورد عبارتند از:
-
SURFACE_TYPE_SURFACE_VIEW
(در واقعAndroidExternalSurface
) -
SURFACE_TYPE_TEXTURE_VIEW
(عملاًAndroidEmbeddedExternalSurface
)
هیچ نوع none
وجود ندارد، زیرا مربوط به عدم درج PlayerSurface
در درخت Compose UI شما است.
در این صفحه انواع سطوحی که می توان برای پخش ویدیو با Media3 استفاده کرد و نحوه انتخاب نوع مناسب برای مورد استفاده خود توضیح می دهد. برای اطلاعات بیشتر در مورد اشیاء سرفیس در اندروید، این مستندات گرافیکی را بخوانید.
یک نوع سطح برای 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 با کیفیت بالاتر در دستگاه های توانمند.
- پشتیبانی از خروجی ایمن هنگام پخش محتوای محافظت شده با DRM.
- توانایی ارائه محتوای ویدیویی با وضوح کامل نمایشگر در دستگاههای Android TV که لایه رابط کاربری را ارتقا میدهند.
بنابراین SurfaceView
باید در صورت امکان بر TextureView
ترجیح داده شود. TextureView
باید فقط در صورتی استفاده شود که SurfaceView
نیازهای شما را برآورده نکند. یک مثال در جایی است که قبل از Android 7.0 (سطح API 24)، انیمیشن های صاف یا پیمایش سطح ویدیو مورد نیاز است، همانطور که در یادداشت های زیر توضیح داده شده است. برای این مورد، ترجیح داده میشود که TextureView
فقط زمانی استفاده شود که SDK_INT
کمتر از 24 باشد (Android 7.0) و در غیر این صورت SurfaceView
.
یک نوع سطح را در Compose انتخاب کنید
در Compose، راه حل interop از AndroidView
Composable برای بسته بندی SurfaceView
و TextureView
استفاده می کند. دو Composable که با آن مطابقت دارند AndroidExternalSurface
و AndroidEmbeddedExternalSurface
هستند.
ماژول Media3 ui-compose
یک PlayerSurface
Composable را ارائه میکند که Player
را به روشی آگاه از چرخه حیات به یک Surface
متصل میکند. انواع سطوح در این مورد عبارتند از:
-
SURFACE_TYPE_SURFACE_VIEW
(در واقعAndroidExternalSurface
) -
SURFACE_TYPE_TEXTURE_VIEW
(عملاًAndroidEmbeddedExternalSurface
)
هیچ نوع none
وجود ندارد، زیرا مربوط به عدم درج PlayerSurface
در درخت Compose UI شما است.