এই পৃষ্ঠায় Media3 এর মাধ্যমে ভিডিও প্লেব্যাকের জন্য বিভিন্ন ধরণের পৃষ্ঠতল ব্যবহার করা যেতে পারে এবং আপনার ব্যবহারের ক্ষেত্রে সঠিক প্রকারটি কীভাবে নির্বাচন করবেন তা বর্ণনা করা হয়েছে। অ্যান্ড্রয়েডে পৃষ্ঠতল অবজেক্ট সম্পর্কে আরও জানতে, এই গ্রাফিক্স ডকুমেন্টেশনটি পড়ুন।
পৃষ্ঠটি সেট করুন
Player ভিডিও আউটপুটকে কোনও Surface সাথে সংযুক্ত করার জন্য চারটি এন্ট্রি পয়েন্ট রয়েছে:
-
void setVideoSurface(@Nullable Surface surface) -
void setVideoSurfaceHolder(@Nullable SurfaceHolder surfaceHolder) -
void setVideoSurfaceView(@Nullable SurfaceView surfaceView) -
void setVideoTextureView(@Nullable TextureView textureView)
এটি পরিষ্কার করার বিভিন্ন উপায়ও রয়েছে:
-
void clearVideoSurface() -
void clearVideoSurface(@Nullable Surface surface) -
void clearVideoSurfaceHolder(@Nullable SurfaceHolder surfaceHolder) -
void clearVideoSurfaceView(@Nullable SurfaceView surfaceView) -
void clearVideoTextureView(@Nullable TextureView textureView)
PlayerView এর জন্য একটি পৃষ্ঠের ধরণ বেছে নিন
PlayerView এর surface_type অ্যাট্রিবিউট আপনাকে ভিডিও প্লেব্যাকের জন্য ব্যবহৃত surface এর ধরণ সেট করতে দেয়। অনুমোদিত মানগুলি হল:
-
surface_view(SurfaceView) -
texture_view(TextureView) -
spherical_gl_surface_view(SphericalGLSurfaceView) - গোলাকার ভিডিও প্লেব্যাকের জন্য -
video_decoder_gl_surface_view(VideoDecoderGLSurfaceView) - এক্সটেনশন রেন্ডারার ব্যবহার করে ভিডিও রেন্ডারিং -
none- যা শুধুমাত্র অডিও প্লেব্যাকের জন্য এবং এটি ব্যবহার করা উচিত যাতে কোনও সারফেস তৈরি করতে না হয় কারণ এটি করা ব্যয়বহুল হতে পারে।
যদি ভিউটি নিয়মিত ভিডিও প্লেব্যাকের জন্য হয় তাহলে surface_view অথবা texture_view ব্যবহার করা উচিত। ভিডিও প্লেব্যাকের জন্য TextureView তুলনায় SurfaceView বেশ কিছু সুবিধা রয়েছে:
- অনেক ডিভাইসে উল্লেখযোগ্যভাবে কম বিদ্যুৎ খরচ ।
- আরও সঠিক ফ্রেম টাইমিং, যার ফলে ভিডিও প্লেব্যাক মসৃণ হয়।
- সক্ষম ডিভাইসগুলিতে উচ্চ মানের HDR ভিডিও আউটপুটের জন্য সমর্থন।
- DRM-সুরক্ষিত কন্টেন্ট চালানোর সময় নিরাপদ আউটপুটের জন্য সমর্থন।
- অ্যান্ড্রয়েড টিভি ডিভাইসে ডিসপ্লের পূর্ণ রেজোলিউশনে ভিডিও কন্টেন্ট রেন্ডার করার ক্ষমতা যা UI স্তরকে উন্নত করে।
তাই সম্ভব হলে TextureView চেয়ে SurfaceView অগ্রাধিকার দেওয়া উচিত। TextureView শুধুমাত্র তখনই ব্যবহার করা উচিত যদি SurfaceView আপনার চাহিদা পূরণ না করে। একটি উদাহরণ হল যেখানে Android 7.0 (API লেভেল 24) এর আগে ভিডিও সারফেসের মসৃণ অ্যানিমেশন বা স্ক্রলিং প্রয়োজন, যেমনটি নিম্নলিখিত নোটগুলিতে বর্ণিত হয়েছে। এই ক্ষেত্রে, TextureView শুধুমাত্র তখনই ব্যবহার করা ভালো যখন SDK_INT 24 (Android 7.0) এর কম থাকে এবং অন্যথায় SurfaceView ভালো।
কম্পোজে একটি পৃষ্ঠের ধরণ বেছে নিন
কম্পোজে, ইন্টারঅপ সলিউশনটি SurfaceView এবং TextureView মোড়ানোর জন্য AndroidView Composable ব্যবহার করে। এর সাথে সম্পর্কিত দুটি Composable হল androidx.compose.foundation থেকে AndroidExternalSurface এবং AndroidEmbeddedExternalSurface । যাইহোক, এই প্রক্সি ক্লাসগুলি এমন একটি API সারফেস প্রদান করে যা অন্তর্নিহিত ভিউগুলির অ্যাক্সেস সীমিত করে। Player সারফেসের একটি সম্পূর্ণ জীবনচক্র (সৃষ্টি এবং আকার আপডেট ) পরিচালনা করার জন্য এই ভিউগুলির প্রয়োজন।
media3-ui-compose মডিউলে, আপনি ContentFrame এবং PlayerSurface কম্পোজেবল খুঁজে পেতে পারেন যা Player একটি Surface সাথে জীবনচক্র-সচেতনভাবে সংযুক্ত করে। এই ক্ষেত্রে সারফেসের ধরণগুলি হল:
-
androidx.media3.ui.compose.SURFACE_TYPE_SURFACE_VIEW -
androidx.media3.ui.compose.SURFACE_TYPE_TEXTURE_VIEW
none টাইপ নেই, কারণ এটি আপনার Compose UI ট্রিতে composable অন্তর্ভুক্ত না করার সাথে সঙ্গতিপূর্ণ।