इस पेज पर, Media3 के साथ वीडियो चलाने के लिए इस्तेमाल की जा सकने वाली अलग-अलग तरह की सुविधाओं के बारे में बताया गया है. साथ ही, यह भी बताया गया है कि अपने इस्तेमाल के उदाहरण के लिए सही सुविधा कैसे चुनें. Android में Surface ऑब्जेक्ट के बारे में ज़्यादा जानने के लिए, यह ग्राफ़िक्स दस्तावेज़ पढ़ें.
PlayerView के लिए कोई प्लैटफ़ॉर्म टाइप चुनें
PlayerView
एट्रिब्यूट की surface_type
वैल्यू सेट करके, वीडियो चलाने के लिए इस्तेमाल किए जाने वाले डिवाइस का टाइप सेट किया जा सकता है. इन वैल्यू का इस्तेमाल किया जा सकता है:
surface_view
(SurfaceView
)texture_view
(TextureView
)spherical_gl_surface_view
(SphericalGLSurfaceView
) - स्फ़ेरिकल वीडियो चलाने के लिएvideo_decoder_gl_surface_view
(VideoDecoderGLSurfaceView
) - एक्सटेंशन रेंडरर का इस्तेमाल करके वीडियो रेंडर करनाnone
- इसका इस्तेमाल सिर्फ़ ऑडियो चलाने के लिए किया जाता है. इसका इस्तेमाल इसलिए किया जाना चाहिए, ताकि आपको कोई सरफेस न बनाना पड़े. ऐसा करने पर ज़्यादा शुल्क लग सकता है.
अगर व्यू का इस्तेमाल वीडियो को सामान्य तरीके से चलाने के लिए किया जा रहा है, तो surface_view
या texture_view
का इस्तेमाल किया जाना चाहिए. वीडियो चलाने के लिए, TextureView
की तुलना में SurfaceView
के कई फ़ायदे हैं:
- कई डिवाइसों पर बैटरी की खपत काफ़ी कम होती है.
- फ़्रेम टाइमिंग ज़्यादा सटीक होती है. इससे वीडियो ज़्यादा आसानी से चलता है.
- जिन डिवाइसों पर एचडीआर वीडियो आउटपुट की सुविधा काम करती है उन पर बेहतर क्वालिटी में एचडीआर वीडियो आउटपुट की सुविधा.
- DRM-सुरक्षित कॉन्टेंट चलाने के दौरान, सुरक्षित आउटपुट की सुविधा काम करती है.
- Android TV डिवाइसों पर, डिसप्ले के पूरे रिज़ॉल्यूशन में वीडियो कॉन्टेंट रेंडर करने की सुविधा. ये डिवाइस, यूज़र इंटरफ़ेस (यूआई) लेयर को अपस्केल करते हैं.
इसलिए, जहां तक हो सके वहां TextureView
की जगह SurfaceView
का इस्तेमाल करना चाहिए.
TextureView
का इस्तेमाल सिर्फ़ तब किया जाना चाहिए, जब SurfaceView
आपकी ज़रूरतों को पूरा न करता हो. इसका एक उदाहरण यह है कि Android 7.0 (एपीआई लेवल 24) से पहले, वीडियो की सतह पर स्मूथ ऐनिमेशन या स्क्रोलिंग की ज़रूरत होती है. इसके बारे में यहां बताया गया है. इस मामले में, TextureView
का इस्तेमाल सिर्फ़ तब करें, जब SDK_INT
24 (Android 7.0) से कम हो. इसके अलावा, SurfaceView
का इस्तेमाल करें.
Compose में कोई सरफेस टाइप चुनना
Compose में, इंटरऑप सलूशन, AndroidView
कंपोज़ेबल का इस्तेमाल करके SurfaceView
और TextureView
को रैप करता है. इसके लिए, दो कंपोज़ेबल AndroidExternalSurface
और AndroidEmbeddedExternalSurface
का इस्तेमाल किया जाता है.
Media3 ui-compose
मॉड्यूल, PlayerSurface
कंपोज़ेबल उपलब्ध कराता है. यह Player
को लाइफ़साइकल के हिसाब से Surface
से लिंक करता है. इस मामले में, ये प्लैटफ़ॉर्म टाइप हैं:
SURFACE_TYPE_SURFACE_VIEW
(AndroidExternalSurface
के हिसाब से)SURFACE_TYPE_TEXTURE_VIEW
(असरदार तरीके सेAndroidEmbeddedExternalSurface
)
कोई टाइप none
नहीं है, क्योंकि यह आपके Compose UI ट्री में PlayerSurface
को शामिल न करने से मेल खाएगा.